欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java学习

程序员文章站 2022-03-07 11:53:24
java学习笔记@TOC第一天(java初学)你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。面向对象java是一个以面向对象编程为目的而开发的语言,以C++为基础,摒弃了C++中许多繁琐的操作,并按照面向对象的思想在底层进行优化。java的类大致与C++相同,不同的是java文件以类为主体,编译链接时也可能以类为基础。类的编写:public class 类名{}这里...

java学习笔记@TOC

第一天(java初学)

面向对象

java是一个以面向对象编程为目的而开发的语言,以C++为基础,摒弃了C++中许多繁琐的操作,并按照面向对象的思想在底层进行优化。
java的类大致与C++相同,不同的是java文件以类为主体,编译链接时也可能以类为基础。
类的编写:
public class 类名{}
这里的public同样是访问修饰符,只不过一般写public,其他的基本没有意义。
1、类需要写在同名.java后缀的文件中 – 主类
2、类名遵循驼峰命名法 (首字母大写,其后的每个单词首字母大写)
3、变量名 方法名(小驼峰命名法 首字母小写,其后的每个单词首字母大写) 常量名(意思完全 全大写)
类中包含属性(数据)和方法(函数)。每个属性和数据都需要单独的访问修饰符,不写的话为默认。
java中主函数写在类内
public static void main(String[] args) {
}

继承

继承: extends
子类继承父类 (SuperClass)

public class 子类  extend 父类{	} 

	 子类拥有父类所有属性和方法(但不一定可用)
子类以及子类对象可以调用父类哪些属性和方法?(可访问的)

访问修饰符:
公共的 可以
受保护的 不一定(相同包内可以)
私有的 不可以
默认的 不一定 包范围内

作用域:
项目空间: 公共的
包空间:默认的 受保护的
文件空间:
主类空间:私有的

protected访问类型:
子类内部使用,可以访问。
父类定义,子类为空:
子类创建于本包,父类也包含在本包中,可以访问
子类创建于本包,父类不包含在本包中,不可访问
子类创建于非本包,父类包含在本包,可以访问
子类创建于非本包,父类不包含在本包,不可访问
总结:父类protected,只跟父类是否跟子类处于同一包有关。子类创建时,protected被限定为子类定义包的范围。

父类定义,子类中使用public重写:
都访问为子类重写内容
总结:处于同包时,子类重写父类,处于不同类时编译器将直接找到子类的public定义。

父类定义,子类使用protected重写:
子类创建于本包,父类也包含在本包中,可以访问
子类创建于本包,父类不包含在本包中,可以访问
子类创建于非本包,父类包含在本包,不可访问
子类创建于非本包,父类不包含在本包,不可访问
总结:编译器首先在子类创建时,无法访问其他包内的子类protected定义,父类在本包内时定义被子类重写,父类不在本包内时接访问子类。

自动转型:
前提: 有继承关系的存在
子类对象可自动转型为父类类型

父类  转型子类对象 = new 子类名();

子类对象转型之后,编译器会根据子类对象前声明的类型去code中查找有哪些属性和方法,即可调用。(不同于C++)

子类跟父类:构造方法顺序:
无参数(同C++一样,先进行父类构造方法,再进行子类方法)
父类-》子类
//隐式的自动调用父类方法

父类有参数
	需要定义在子类构造方法内第一句加上super(*)来调用父类方法。
父类无参数
	编译器自动在子类构造方法第一句加上了super(),也可以自己手动加上。

第二天

界面

界面开发:
可视化组件:
容器: 可以加载其他组件的容器 — 窗体
组件: 按钮 输入框 菜单 …

规则元素化:
颜色 尺寸 字体
工具类型: 布局 图形类 …
1、java.awt 早期的界面开发包 保留使用元素类型

2、javax.swing 升级之后的开发包 主要升级了视图部分

JFrame 最基础的界面类
setDefaultCloseOperation 设置退出方式
setVisible设置是否可见
FlowLayout 流式布局
jFrame.setLayout 将布局添加进界面
JLabel 标签组件
JTextField 文本框
JButton 按钮
Dimension 尺寸属性

第三天

监听

事件监听:
目标: 点击按钮 弹出一个窗体

监听器:
动作监听器 :java.awt.event.ActionListener
接口:interface 只有方法 (没有具体实现)
– 在动作监听器中,点击按钮之后会调用接口内方法

步骤:
1、将监听器接口接在一个我们自己写的类上
类实现接口
格式:
public class 类名LoginListener implements ActionListener {
2、将接口中所有的方法 覆写 改分号为大括号
public void actionPerformed(ActionEvent e){
3、点击按钮之后来调用的执行的代码
// 弹出窗口 验证密码 判断按钮
}

}

界面类中
将监听器类与需要监听的组件关联
LoginListener loginl = new LoginListener();
btn.addActionListener(loginl);

实现了监听器接口的类 的对象

事件类:
动作事件类: ActionEvent
事件发生时,会将组件以及事件的信息打包传入监听响应方法中

查阅java文档,新建监听类,打印event内信息
System.out.println(“ACTION_FIRST:”+e.ACTION_FIRST);
System.out.println(“ACTION_LAST :”+e.ACTION_LAST);
System.out.println(“ACTION_PERFORMED :”+e.ACTION_PERFORMED);
System.out.println(“ALT_MASK :”+e.ALT_MASK);
System.out.println(“CTRL_MASK :”+e.CTRL_MASK);
System.out.println(“META_MASK :”+e.META_MASK);
System.out.println(“SHIFT_MASK :”+e.SHIFT_MASK);

System.out.println(“getActionCommand() :”+e.getActionCommand());
System.out.println(“getModifiers():”+e.getModifiers());
System.out.println(“getWhen() :”+e.getWhen());
System.out.println(“paramString() :”+e.paramString());
System.out.println("–getSource():"+e.getSource());

在按钮监听类内,进行判断函数,并执行动作。然而执行动作时需要访问界面类p的属性,界面类被定义在main函数中,无法访问。
解决办法:在监听类内定义界面类,在界面类内将this引用传入监听类,即可完成访问。

第四天

String数据格式
查阅java包,发现String跟基础类型一起定义在long中,然而String类中最为核心的数据为 Value 是final 的char,一旦被定义,char是不可变的。
当尝试给一个已经定义了的String赋值时,将会直接生成一个新的String,使用hashCode方法可以发现该对象的hash已经改变,在内存中的地址改变。

鼠标事件
任务:制作绘图板,能够绘制直线

鼠标监听器也是一种接口 interface

接口的定义:
1、属性全是默认为静态常量
2、只能写抽象方法

为什么接口不能创建对象?(接口是抽象类型)
但是接口可以作为一种类型来声明

使用接口(监听器):
1、创建一个类实现这个接口 (implements )
2、在这个类中重写接口中所有的抽象方法
抽象类的使用也是如此
1、在这个类中可以直接使用接口中的常量
2、这个类的对象,可自动转型为接口类型

练习:
implements 与 extends的区别 接口 VS 抽象类
继承: 单继承 一个类只能继承一个类
接口: 多实现,一个类可以实现多个接口
接口和抽象类都需要被别的类继承,自己无法创建对象。但一个类可以继承多个接口,只能继承一个抽象类

final: java关键字保留字 最终形态 定义之后不能改变
定义常量: 全部大写 并且尽可能详细

static : 静态的 唯一性
类名直接调用 ,属于类,不属于对象

画图板:
绘制一条直线

界面: JFrame
监听器: MouseListener 鼠标监听器 监听可视化组件 – 窗体对象
事件类: MouseEvent 鼠标事件 – 获取坐标

绘制图形类:
Graphics 图形 – 画笔
获取方式:
不能创建对象
从可视化组件上获取
在可视化之后 获取

Graphics g = jf.getGraphics();

g.drawLine(x1,y1,x2,y2);

JPanel jp =new JPanel();// 面板
面板用来盛放其他组件

本文地址:https://blog.csdn.net/z970984993/article/details/111567607