第四周学习总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周学习总结相关的知识,希望对你有一定的参考价值。
一、JAVA的垃圾回收机制
垃圾回收机制是回收没有被变量所指向的对象。
垃圾回收机制由虚拟机执行,虚拟机会在比较空闲的时候进行垃圾回收,程序员没法干预。
但是程序员可以通过调用system.gc( )的方式加快垃圾回收的速度。
补充:return的使用 除了在有返回类型中返回值 还可以在void无返回类型中返回主方法
了解:Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
二、构造方法
构造方法的格式:
public class student{
public student(){
}
}
构造方法 是一个特殊的方法
方法名必须与类相同 且无返回类型 其作用是产生对象
构造方法会初始化对象
构造方法的作用:
1.为对象分配空间
Student a=new Student( );
2.初始化成员变量
3.返回创建对象的地址
(成员变量是随对象初始化而初始化 静态变量是随类的加载而初始化)
如果一个类没有定义构造方法,那么虚拟机会自动分配一个无参构造方法
但是如果一个类定义了构造方法 那么默认的无参构造方法就会消失 除非再次定义 否则不能使用
三、形参与实参
在方法中,直接使用变量名,会优先使用形参(本质是局部变量),局部变量如果不存在则使用成员变量或静态变量。
this.属性名 使用的是成员变量
四、继承
类是对象的抽象 父类是子类的抽象 子类继承父类
继承的优点:
1.代码的重用
2.父类的属性和方法可用于子类
3.可以使设计应用程序变得更加简单
4、子类可以基于父类扩展更多属性和方法
继承的使用原则:
观察要使用的类,确定它们的共同和特有的特征(属性)、行为(方法);
提取共性迁往父类。便于子类进行方法和属性的重用。
对于不同的特征和行为,在子类里可以重新定义或扩展。
(补充,快捷键保存 ctrl+s,eclipse里文件带有*是没通过编译(未生效,未产生class文件))
在java中,一个类只能有一个父类,一个类不能同时继承两个或多个类(比如 object类,Human类,man类。Human继承的是object类,man继承的是human类,但是man不能再继承其他类。 );
所有类的根类都是object;
五、GUI
组件:
1.jframe 窗体
2.jpanel 面板
面板边框颜色的设置
Border bo1 = BorderFactory.createLineBorder(Color.yellow);
jp1.setBorder(bo1);
3.jtabbedpane 标签面板
3.jtextfield 文本框
4. jbutton 按钮
5.jradiobutton 单选按钮 buttongroup 按钮组 通过按钮组可以实现只能选一个按钮的效果
6.checkbox 复选框
7.jcombobox 下拉框 增加内容 jtxt1.addItem("在线");
8.Jlabel 标签 包括图片也是标签的一种 Jlabel a=new jlabel(new imageicon(“img/图片1.jpg”));
图片的裁剪
Image img=new imageicon(“img/图片1.jpg”).getimage();
img=img.getscaledinstace(300,300,1);
作为背景图的大图片应该被放在最后
窗体基本设置:
构造方法中:
this.setlayout(null); 先设置绝对布局
…………………………
中间加入各种组件
…………………………
this.setsize(x,y); 设置尺寸
this.setlocationrelativeto(null); 设置位置
this.setdefaultclosedopreation(3);默认关闭窗体
this.setvisible(true); 设置可见性
补充:当出现比如标签加文本框的这样一个组件组时,组合后的类继承文本框也可以,继承标签也可以。但一般继承文本框,因为我们实际使用中
会以文本框为主,标签只是提示,没有进一步使用价值。
六、toString方法的重写
设a是一个Student类的对象
平时所见system.out.println(a);其实默认是:system.out.println(a.toString()); (如果a不是对象这一类的引用类型,就打印具体指,否则打印地址);
直接打印对象的话,打印的是一个内存地址。
我们如果要打印对象的具体值,那么就应该在对象a的类中重写toString()方法;
补充:在出现引用类空指向null时,使用null操作一般都会报错,然而打印null却不会。原因也是因为默认system.out.println(a.toString()); 打印的是地址,而地址反馈为空指向。
七、静态变量和静态方法的加载时机
静态变量和静态方法是随着类的加载而加载的,因此它们是在成员变量和成员方法(它们会在对象产生时加载)之前就加载的,此时成员变量和成员方法并未产生,因此静态方法无法调用成员方法或属性。
八、父类、子类的关系
补充:尽量不要在一个文件定义多个类,因为杂乱不好找,而且一个文件里有了一个public类以后,就不能再定义public类了,也就不方便使用了。
九、java.lang 包
java.lang包里的类可以直接使用 不用导入
比如常见的 system. 比如 产生随机数的 Math. 等等
math.random( )表示产生0-1的随机数,可以产生0,但不会产生1.(可能是小数,也可能是整数)
那么 math.random( )*100就是产生0—100的随机数了;
产生60至100的随机数则是60+math.random( )*40了 如果要产生整数 那么就在前面强制转换(int)。
十、final关键字
1.final修饰变量——表示变量值不能修改
2.修饰类——表示类不可以被继承
3.修饰方法——表示方法不能被重写
4修饰对象——表示对象所指向的内存地址不能被修改,也就是说该变量不能指向别的对象,但是可以修改其属性值。 因为对象是引用类,对象也就是一个地址指向,修饰对象也就是修饰对象的地址指向,所以不能修改。
十一、访问修饰符
4个访问修饰符分别为 public protected 默认(无修饰符) private
同一类中是否可以使用 可以 可以 可以 可以
同一个包中是否可以使用 可以 可以 可以 不可以
不同包的子类能否使用 可以 可以 不可以 不可以
其他类能否使用 可以 不可以 不可以 不可以
十二、封装
封装是指按照信息隐藏原则,将信息组织在一起。
封装的特点:1.信息的集合 2.信息的隐藏
封装的通常表现:父类中属性使用private修饰符修饰 如private name; private age;
那么理论上说,其他任何类(包括子类)都没办法访问到这个属性
但我们可以通过在这个父类设置两个方法set 和 get,然后在其子类里调用这两个方法 实现私有属性的调用和修改。
私有属性和公有属性的区别:
1.私有属性 可以通过单独去掉set或单独去掉get方法,将属性设置为只读或只写属性。公有属性无法实现
2.私有属性可以在set方法设置之前,做一些合理性的验证 比如年龄不能为负或大于两百,从而保证属性值的合理性。公有属性无法实现
十三、this关键字和super关键字
this.age
super.age
this()
super()
有些抽象 就不多描述了
以上是关于第四周学习总结的主要内容,如果未能解决你的问题,请参考以下文章