java学习 笔录.docx
- 文档编号:24450609
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:19
- 大小:456.52KB
java学习 笔录.docx
《java学习 笔录.docx》由会员分享,可在线阅读,更多相关《java学习 笔录.docx(19页珍藏版)》请在冰豆网上搜索。
java学习笔录
1、隐式转换只能是常量转换而不能是变量
2、继承是发生在类与类之间。
继承是可以单继承,也可以多层继承。
3、多态是指对象在运行期和变异期具有两种状态,多态的使用代码具有更多的灵活性和重用性。
4、面向过程和面向对象最明显的区别就是,面向对象时按照要完成的功能来实现的,而面向过程是按照解决这个问题的步骤来实现的。
5、定义类可以再一个包下面,也可以不在一个包下面。
类又分为已有类和自定义类。
6、成员变量和对象的引用在申明时,不对其赋值的话,系统都会赋初值。
7、局部变量和成员变量很相似。
但是局部变量在方法体中创建,方法体外是访问不到这个变量的。
8、成员变量可以被:
public,protected,default,private,staticfinal修饰,局部变量可以被final修饰,但不能被其他的修饰符修饰。
9、成员变量是在堆里创建的,局部变量是在栈里面进行创建的。
10、成员变量是系统默认的,局部变量没有系统默认值,必须手动赋值。
11、不能调用没创建的分对象或者成员变量,不能条用对象为NULL的引用。
12、报的创建注意事项:
packagea.b
Package必须在第一行,package只能有一个,不能有多个。
如果包有多层的话,就有句点.分隔。
13、import包名.类名
14、静态引用就是引入包中的静态成员变量和静态方法。
15、Final关键字修士成员变量,其值是不能改变的。
必须进行初始化。
16、Final关键字修饰方法时,和修饰成员变量,局部变量不一样。
被修饰的方法能被该类的子类所继承,但不能重写。
17、被修饰为static类型的成员变量不属于对象,它是属于类的.
18、方法的重写也叫方法的覆盖,关键之是override。
19、Java的重载,关键字是overload。
重载的名称相同,但是方法的参数列表(参数个数和参数类型)不同。
20、重载的方法的返回值可以相同也可以不同。
21、传递基本类型,是看匹配参数列表
22、方法有他的返回类型,重写也是。
重写方法后,返回要一样。
静态方法是不能重写的。
23、父类的静态方法可以被子类的静态方法覆盖。
24、父类的非晶态方法不能被子类的静态方法覆盖
25、父类的静态方法不能被子类的非晶态方法覆盖
26、覆盖是用于父类和子类之间的。
27、重写是用在统一各类中,有相同的方法名,但参数不一样
28、重写关键字是override,重载关键字是overload,重写,重载和覆盖都是基于继承关系。
29、当继承关系发生了,想用父类的方法就用super关键字引用,如果想用新的方法就重写下,来完成新的功能需求
30、重写的方法在运行期采用多态的形式.
31、Abstract关键字表示抽象的意思
32、反射机制,反射机制就是起到放大镜的效果,可以通过类名,夹在这个类,显示这个类的方法等信息
33、泛类的总结:
泛类能使代码量减少,能产生很多公共的代码;泛类在编译时进行类型的检查并自动转换,是代码的运行效率提高;泛类在编译时自动转换出现错误,会进行错误提示;使用泛类的时候参数只能是类的类型,不能是简单类型;泛类的参数可以有多个;使用泛类的时候参数也能继续别的类型。
34、重写与重载的区别:
重写是基于继承的重写是重写父类中的方法,然后在子类中出现一个与该方法相同名称的方法;重载的方法名字相同,但是方法的参数列表不相同;重载的返回值可以相同也可以不相同。
-----------------------------------------------------接口----------------------------------------------------------
35、接口就是完成某些特定功能的类。
36、接口的修饰符--interface接口名称{//成员变量和方法的申明}
37、接口里的成员变量默认为publicstaticfinal类型
38、接口不能申明为final,因为final类型必须要实现.
39、接口里创建方法和一个类的方法很相似,但是不同点是接口的方法,没有具体的方法体,而类的方法必须去实现其方法体。
40、接口的方法和类的方法的区别:
接口里的方法默认呗修饰为public,abstract类型,类里的方法如果修饰为,abstract类型,就会提示错误;类里的方法不能为final、abstract类型
41、所谓instanceof可以理解为检查实例。
Instanceof关键字不能比较基本类型的数据,可以对对象和接口使用;它的比较是基于多态的;不推荐使用instanceof,因为要多使用多态;它的右边比较类型的只能是类和接口。
---------------------------------------抽象和接口的区别--------------------------------------------------
42、抽象类中有一个或者多个抽象方法,但是接口中的方法全部被修饰为抽象方法(全被默认修为publicabstract)
43、一个类可以实现一个接口,也可以实现多个接口。
44、实现抽象类里的方法可以实现部分方法,也可以实现所有方法,但是接口的方法必须全部实现
45、接口里的变量都被修士成publicstaticfinal类也就是常亮,所以没有成员变量,它的方法全部都是public类型
-----------------------------------------构造器--------------------------------------------------------------
46、通过new关键字来条用构造器使其对象在内存中创建出来。
----了解构造器
----创建构造器
-----使用和调试构造器
-------了解构造器的基本机制
47、类的修饰符类的名称{//方法体};构造器不能写default类型的.构造器的名称必须要和类的名称相同
48、不能有返回值,void也不行。
它的参数可有可无。
49、构造器可以被修饰符修饰
50、构造器可以被修饰为public、protected、private类型,但不能修饰为abstract、final、native、static、synchronized
51、构造器的调用有两种情况:
1、在本类里调用或者在同包下的另一个类调用;2、另一种情况是子类调用父类的构造器
52、构造器的重载和方法的重载一样,但是有几点要注意下:
构造器的重载的方法是没有返回值的,构造器是不能被继承的(这是和方法有所区别的)
53、Finally语句在程序中肯定会执行,但是也有几种情况肯恩会中断finally语句执行的情况:
finally语句本身就产生异常;再者就是执行finally语句的线程死亡;还有就是执行finally语句时断电。
54、异常分类:
捕捉异常和未捕捉异常。
在java类有throwable类,所有的异常类都是继承throwable类,它有两个直接子类,error类和exception类,Exception类中又有一个RuntimeException类。
在Exception类中的直接和间接子类中除去RuntimeException类的直接和间接子类,都是捕获异常。
其他的都为未捕获异常。
55、异常有时候不需要立即处理,但是必须要处理,所以就引入了抛出异常。
如果异常处理不了,就一级一级向上抛出,知道给main方法。
异常抛出的两个关键字:
throw和throws
56、Throws语句是在方法的声明中来抛出异常,throw语句是在方法体内使用抛出异常。
57、使用两种方法从外部类外访问内部类,在外部类外访问内部类时,是不能够直接创建内部类的对象,想要创建内部类对象,首先要创建外部类对象,然后以外部类对象为表示来创建内部类对象。
58、在内部类中访问外部类,就想所有的同一个类中的成员互相访问一样,这是没有限制的,包括声明为private私有的。
59、一个内部类和外部类中具有相同名称的变量访问,要访问外部成员,首先创建一个外部对象,然后对该外部对象调用外部类成员变量.
----------------------------匿名类不类---------------------------------------------------
60、创建匿名内部类将使用到继承父类或者显示接口的知识。
61、匿名类是没有名字的,所以需要在创建匿名内部类时同时创建匿名内部类的对象
62、匿名类是没有构造器的,解决成员变量的安放位置的方案是创建一个非静态语句块,这样就可以将所有的初始化的成员变量都放在该非静态语句块中。
这样匿名类中的方法就可以调用了。
63、在局部内部类中,只能访问方法中的最终变量。
------------------------------------------------------多线程-------------------------------------------------
多线程的定义
多线程的使用
多线程的调用和生命周期,以及同步问题
64、定义一个线程可以通过继承Thread线程类来实现,在Thread类中具有一个run方法,重写run方法,在其中定义要执行的语句。
当线程启动时,run方法中的程序就成为一条独立的执行程序线程。
65、classMyRunnableimplementsRunnable
{
//定义一个run线程方法
publicvoidrun()
{
System.out.println("这是一个正确的启动线程的程序");
}
}
publicclassXianCheng4
{
publicstaticvoidmain(Stringargs[])
{
MyRunnablemr=newMyRunnable();
Threadt=newThread(mr);
t.start();//启动线程
}
}
66、Java对多线程的设计是调用start方法,然后执行run,启动线程和main方法并行执行的线程。
Start只能调用一次,多次启动线程时就会出现异常。
67、同时运行多个线程时,运行结果不唯一。
先运行哪一个线程不确定,线程间交替运行也不确定。
68、多线程的同时运行:
创建不同的Thread的对象,调用启动不同的对象的start就可以了
69、线程生命周期,分为新建,准备,运行,等待/阻塞和死亡。
70、新建状态:
当一个线程对象被创建后,线程就处于新建状态,在新建状态中的线程对象,从严格意义上说只是一个普通的对象,他还不是独立的线程,调用start方法后就会进入准备状态,从新建状态只能进入准备状态,并且不能从其他状态进行新建状态
71、处于新建状态中的线程被调用start方法就会进入准备状态。
线程从新建状态进入准备状态后是不可能再进入新建状态,在等待/阻塞状态中的线程被解除等待和阻塞后将不直接进入运行状态,而是首先进入准备状态,然后让系统选择哪一个线程进入运行状态。
72、准备状态的线程被系统选中就会获得cpu时间,进入运行状态,在运行状态中,将执行线程类run方法中的程序,在运行状态下还可以让线程进入到等待或者阻塞状态。
73、处于死亡状态的线程不能再使用start方法启动线程。
但是它还可以作为普通的类来使用。
74、当线程处于运行状态时,调用sleep睡眠方法将使线程从运行状态进入等待,阻塞状态。
从而停止运行线程,sleep睡眠方法是具有一个时间参数的,该时间是指到线程进入准备状态,等待系统的调度。
75、Sleep重载存在两种形式,publicstaticvoidsleep(longmillis)throwsInterruptedException;毫秒级
76、Publicstaticvoidsleep(longmillis,intnanos)throwsInterruptedException;纳秒级的
77、Sleep方法只是给线程一个调度的建议,是否调度成功是不能确定的。
78、Java中的优先级是采用从1到10表示,数字越大,表示优先级越高,如果没有线程设置优先级,则线程的优先级为5,这是线程的默认值,但是对于子线程来说,它的优先级是和其父线程的优先级相同的。
79、如果需要设置线程优先级时,可以通过调用setPriority方法来设置,publicfinalvoidsetPriority(inti)。
80、上面的参数i就是优先级的等级,其中:
MAX_PRIORITY,NORM_PRIORITY,MIX_PRIORITY
81、在java中具有两种线程让步方法,第一种是yield,是让出当前cpu,而将cpu让给哪一个线程时不确定的,由系统来进行选择,使用yield让步的方法的线程将从运行状态进入准备状态。
注意yield让步操作可能不成功,因为在线中使用yield方法,使该线程进入准备状态。
但是系统有可能再次选择该线程,使该线程进入运行状态。
82、Publicstaticvoidyield();
83、Yield让步方法是一个静态的方法,所以该方法也是和对象无关的。
84、第二种是Join让步方法,是将当前线程的cpu资源让步给指定的线程。
85、Join的格式:
publicfinalvoidjoin()throwsInterruptedException
86、publicfinalvoidjoin(longmills)throwsInterruptedException
87、publicfinalvoidjoin(longmillis,intnanos)throws
88、Join让步方法具有三种形式,没有参数表示指定的线程执行完成后在执行其他线程,参数表示在参数的时间内执行让步给的执行线程。
------------------------------------swing桌面程序开发------------------------------------
Swing的开发基本过程
创建窗口,面板,标签和按钮
熟练使用swing中的事件。
89、在开发swing程序中,通常是通过继承JFrame窗口类来实现窗口的。
90、JFrame有四种构造器
91、第一种是无参构造器,使用该构造器将创建一个初始不可见的新窗体,除此,第二种
是String类参数的构造器,能创建一个初始时具有标题的新窗体;还有两种需要给出图形配置参数的构造器。
92、直接使用JFrame窗口类创建窗体只能适用于创建简单的窗口需要,如果创建复杂的,就会使程序变得非常复杂难以理解。
93、设置窗体时,setResizable方法可以设置创建的窗口是否可以调整,默认是可以调整的,也就是参数值为true。
94、JFrame窗口类中海油一个setUndecorated方法,使用该方法可以将窗体的边框的标题栏去掉。
95、在JFrame窗口类中,还有一个重要的方法,setDefaultCloseOperation方法,使用该方法可以设置当单击关闭按钮关闭窗口时所执行的动作。
96、上面的动作包括:
DO_NOTHING_ON_CLOSE不执行任何动作
DISPOSE_ON_CLOSE释放窗体对象
HIDE_ON_CLOSE隐藏窗体
EXIT_ON_CLOSE退出JVM
----------------------------------JPanel面板类-------------------------------------------
97、面板可以说是控件
98、先了解下容器。
Swing中的控件可以分为三类:
顶层容器,非顶层容器和普通控件。
99、JFrame窗口类就是一个顶层容器,顶层容器是一个直接可以显示在系统桌面上的控件,其他控件必须直接或者间接的借助顶层容器进行显示。
顶层容器除了JFrame窗口类外,还包括JWindow和JDialog等不常用的类
100、JPanel面板类是一个非顶层级的容器,非顶层级容器是具有两面性。
非顶层容器是放在顶层容器中使用,对于顶层容器来说,非顶层容器是一般的控件,它还可以添加控件,对于这些控件来说,非顶层容器就是一个容器。
101、普通控件占大部分,它们不具备容器的作用,它们只能放在容器中进行显示,普通控件包括按钮,文本框等很多控件。
102、设计的基本是先定义顶级容器,然后在顶级容器中添加非顶级容器,然后将普通控件放在非顶级容器中。
这样设计的好处是重用性。
103、JPanel面板类是一个非顶层的容器,它同时具有四种构造器,无参是最常用的。
关于它的信息可以再网上搜索。
104、JLable标签类,是Swing中最基本的控件,它是一种非交互的控件,也就是不需要进行操作的控件,标签有六个构造器。
105、
106、JButton按钮类
-----------------------------------------Swing中的事件--------------------------------------------
107、事件是一种很好的让界面和用户进行交互的手段。
108、事件源就是出发时间的控件,这里包括按钮,文本框,窗体等很多控件。
109、事件监听器是指现实专门的监听接口的类的对象。
每一个事件都有对应的监听接口,同时在该接口中给出了处理事件的方法,在方法中编写出发时间后的执行程序,在编写程序时,还需要将监听器注册给事件源。
110、事件源和监听器是多对多的关系。
当为同一个事件源注册多个监听器时,监听器的执行顺序是按照先注册后坚挺的顺序来执行的。
111、Java语言类的层次非常分明,因而只支持单继承,为了实现多重继承的能力,Java用接口来实现,一个类可以实现多个接口,这种机制比多重继承具有更简单、灵活、更强的功能。
在AWT中就经常用到声明和实现多个接口。
记住无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感兴趣,可以不具体实现其方法,而用空的方法体来代替。
但却必须所有方法都要写上。
112、窗体的打开,关闭和激活事件只需要实现WindowListener监听接口的监听器,
113、Implements一般实现接口,接口一般是只有方法的声明没有定义,extends是继承类,它是有方法体的,override是指伪代码,表示重写,它有两方面的好处,1当注释用,2编译器可以验证@override后面的方法名是否在父类中所有,没有就会报错。
----------------------------------布局管理器-------------------------------------------------
114、布局管理器也有很多中,包括流布局,网格布局,边框布局和空布局。
115、流布局在放在控件时,是按控件的添加顺序,依次将控件从左到右进行摆放,并且在一行的最后会自动换行放置。
控件时默认剧中放置的
116、布局管理器也是通过构造器来创建的,流布局是通过FlowLayout类来创建,FlowLayout类具有三种构造器。
一种是无参,一种是有一个参数用来指定对齐方式的,还有一种是带有三个参数,分别指定了流布局管理器的对齐方式,控件中的水平间距,流布局管理器的垂直间距。
117、设置上述带三个参数的构造器还可以通过常用的方法设置:
getAlignment方法和
setAlignment方法分别获取和设置流布局管理器的对齐方式。
getHgap方法和setHgap方法分别获取和设置流布局管理器中控件和控件之间的水平间距。
getVgap方法和setVgap方法分别获取和设置流布局管理器中控件和控件之间的垂直间距。
118、网格布局是通过GridLayout类创建的
119、边框布局是通过BorderLayout类创建的
120、空布局是不需要使用类来创建的,只需要在程序指定布局管理器为null
121、卡片布局是通过CardLayout类创建的
122、箱式布局和弹簧布局。
----------------------------------------Swing常用控件---------------------------------------------
123、文本框以及密码框和多行文本框
124、创建文本框:
文本框是通过JTextField类来创建的
125、
126、密码框是通过JPasswordField类来创建的,因为密码框和文本框的关系,所以JPasswordField类的构造器是和JTextField类的构造器相同的。
127、多行文本框也是文本框的一种特殊形式,多
128、行文本框是通过JTextArea类实现的
129、
130、复选框和单选按钮
131、单选按钮是通过使用JRadioButton类来创建的,在JRadioButton类中具有7种构造器形式,构造器如表所示:
132、
133、创建复选框,通过创建JCheckBox类,与JRadioButton的不同是,JCheckBox不需要编组使用,各个选项之间没有逻辑约束关系。
134、通过JRadioButton与ButtonGroup的配合使用,可以很方便地实现单项选择
135、
136、选项卡也是开发GUI界面常用的控件之一,主要包括JTabbedPane类,ChangeEvent事件以及具体案例等内容。
137、选项卡可以产生多个标签框架,每个标签框架窗口自成一个系统,即包含多个页面,每个页面与一个标签对应。
当选择某一个标签时,标签框架窗口就会自动显示出此标签的框架内容,并触发一个ChangeEvent事件,这个事件由ChangeListener监听器监听并处理。
138、分割窗格JSplitPane控件允许在单个空间中放置两个控件,开发人员尅自由决定按水平方向或者按垂直方向划分空间,还可以在程序的运行期间使用鼠标自由调整空间的分割比例。
通过JSplitPane控件的嵌套使用,可以将空间分割成更多的部分。
139、JSlider类是swing包中提供的用于实现滑块的控件。
滑块组建是由可以拖动的滑块和一个范围组件组成的,用户可以通过拖动滑块在一个区间范围里进行选择。
140、JSliderageSlider=newJSlider();
ageSlider=newJSlider(SwingConstants.VERTICAL,0,120,20);
141、JProgressBar是Swing中提供的用来实现进度条的控件;
142、JList类没有提供滚动功能,但是可以通过将其放置在JScrollPane中来实现滚动操作;
143、JList的常用构造方法如下所示:
•publicJList()方法:
该方法可以构造一个使用空模型的JList对象。
•publicJList(Object[]listData)方法:
该方法以显示指定数组中的元素构造一个JList。
144、菜单的组织方式为:
一个菜单条JMenuBar包含多个菜单项(JMenuItem)。
JMenuItem有两个子类,分别为JRadioButtonMenuItem及JCheckBoxMenuItem用于表示单选菜单项和复选菜单项。
当用户选择某个菜单项后,就会触发一个ActionEvent时间,由ActionListener监听器处理。
145、菜单项有两种状态,启用状态和禁用状态。
菜单的状态可以使用setEnable
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java学习 笔录 java 学习