java学习(3)构造器和垃圾收集器、数字与静态

构造器和垃圾收集器

栈与堆

方法的调用和局部变量在,所有的对象在

栈顶上的方法是目前正在执行的。

对象的引用变量(就是遥控器)存放在栈上,而对象则存放到堆上

实例变量存放在所属对象的堆空间上。

构造函数

构造函数并不是一个方法

构造函数没有返回的类型,并且名称要与类名一致

分辨方法和构造函数的办法就是是否有返回类型

如果写了一个带有参数的构造函数,那么应该再写一个没有参数的构造函数

构造函数重载,编译器看的是参数的类型和顺序,不是参数的名字

实例变量有默认值,局部变量没有

构造函数可以是私有的

在创建新对象时,所有继承下来的构造函数都会执行。

抽象类作为父类,他的构造函数也会在具体子类创建出实例时执行。

调用父类的构造函数使用的是:super(); 如果我们在子类的构造函数里面不写,那么编译器会自动帮我们添加,只不过添加的是没有参数的版本

使用this()来从某个构造函数调用同一个类的另外一个构造函数,this()只能用在构造函数中,且必须是第一行语句。super()和this()不能兼得。

对象的生命周期

当最后一个引用消失的时候,对象就会变成可回收的。

对null引用执行圆点运算符会在执行期遇到NullPointerException这样的错误

数字与静态

Math方法

最接近全局的方法。

这个类中的所有方法都不需要实例变量值,因为这些方法是静态的。

静态(static)

静态的方法是以类名来调用的,静态的方法不需要类的实例

可以使用私有的构造函数来限制非抽象类被初始化

静态的方法不能调用非静态的变量,也不能调用非静态的方法

以引用变量名调用静态方法的程序代码可以实现,但是不推荐使用

静态变量的值对于所有的实例来说都相同,同一类所有的实例共享一份静态变量

静态变量会在该类的任何静态方法执行前就初始化。

final

final的变量代表你不能改变它的值。

final的方法代表你不能覆盖掉该方法。

final的类代表你不能继承该类(也就是创建子类)

总结一下(这块真的有点乱啊)

变量用static代表这是能够修改的全局变量,变量用final代表这是不能修改值的变量(可以看成是全局的),abstract不能修饰变量。

类用abstract修饰表示是类本身不能声明实例,只能由子类来声明实例;类用final修饰表示类不能有子类来继承;static不能修饰类。

方法用abstract修饰那么该类也是abstract,表示该方法必须由子类覆盖;方法用final代表子类中不能覆盖该方法;方法用static表示该方法的调用时用类名来实现的,不需要实例。

 

autoboxing(自动装箱)

包装类型(Interger)和primitive主数据(int)可以相互转换

可以用在很多的地方:方法的参数、返回值、Boolean表达式、数值运算、赋值

包装也有静态的实用性方法!(将String转换成primitive主数据类型:Integer.parseInt)、(将primitive主数据类型转换为String Double.toString)

数值转换成String,最简单的方法是将数字接上现有的String  String doubleString = “ ” + d;

数字的格式化

调用静态的String.format()并传入值与格式设定

格式化说明的格式:%[argument number] [flags] [width] [.precious] type

format()函数不是用的重载实现的,而是使用的java的一项新的功能:可变参数列表

日期

Date Today = new Date();

String.format("%tA, %<tB %<td", Today);

操作日期可以使用:java.util.Calendar

Calendar cal = Calendar.getInstance();

静态import

可以少打几行代码,但是会使代码变得难以阅读

11、异常处理

使用try/catch块告诉编译器调用方法有风险的

异常时一种Exception类型的对象

方法可以抓住其他方法所抛出的异常。异常总是会丢给调用方。会抛出异常的方法必须要声明他有可能会这么做

finally:无论如何都要执行的部分

异常时多态的,以异常的父类来声明会抛出的异常

如果不想处理异常,可以把它duck掉来避开,但这是在踢皮球

异常处理规则:如果只带有finally的try必须要声明异常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章