java学习-5.初始化与清理
2016-04-08 21:32
411 查看
初始化与清理
用构造器确保初始化
Java会在用户有能力操作对象之前自动调用相应的构造器,从而保证初始化的进行构造器的名称必须与类名完全相同
1.不接受任何参数的构造器叫做默认构造器
class Rock { Rock() { System.out.print("Rock "); } } public class SimpleConstructor { public static void main(String[] args) { for(int i=0;i<5;i++) new Rock(); } }
2.构造器也可以带有形式参数,以便指定如何创建对象
class Rock2 { Rock(int i) { System.out.print("Rock"+i+" "); } } public class SimpleConstructor2 { public static void main(String[] args) { for(int i=0;i<5;i++) new Rock(i); } }
方法重载
为了让方法名相同而形式参数不同的构造器同时存在,必须用到方法重载;其他方法也可以用方法重载class Tree { int height; Tree() { //无参的构造方法 System.out.println("Planting a seedling"); height=0; } Tree(int initialHeight) {//有参数的构造函数 height=initialHeight; System.out.println("Create new tree that is"+height+"feet tall"); } void info() { System.out.println("Tree is"+height+" feet tall"); } void info(String s){ System.out.println(s+": Tree is "+height+"feet tall"); } } public class OverLoading { public static void main(String[] args) { for(int i=0;i<5;i++){ Tree t=new Tree(i); t.info(); t.info("overloading method"); } new Tree(); } }
参数顺序不同也足以区分两个方法
涉及基本类型的重载
1.如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升。如果无法找到恰好接受char参数的方法,就会把char直接提升为int型2.如果传入的数据类型(实际参数)大于方法中声明的形式参数类型,就得通过类型转换来执行窄化转换
默认构造器
默认构造器是没有形式参数的,是用于创建一个默认对象。如果你写的类中没有构造器,则编译器会自动帮你创建一个默认的构造器,但是如果已经定义了一个构造器(无论是有参数还是没有),编译器就不会帮你自动创建默认构造器this关键字
this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。**只有当需要明确指出对当前对象的引用时,才需要使用this关键字。
成员初始化
1.类的数据成员是基本类型时,类的每个基本类型数据成员都会有一个初始值 2.在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null
指定初始化
1.在定义类成员变量的地方为其赋值public class InitialValues2 { boolean bool=true; char ch='x'; int i=0;
也可用此方法初始化非基本类型的对象
class Depth{} public class Measurement { Depth d=new Depth(); }
2.可以通过调用某个方法来提供初值
public class MethodInit{ int i=f(); int f(){return 11;} }
构造器初始化
可以用构造器来进行初始化无法阻止自动初始化的进行,它将在构造器被调用前发生
初始化顺序
在类的内部,变量定义的先后顺序决定了初始化的顺序。**即使变量散布于方法定义之间,它们仍然会在任何方法(包括构造器)被调用前得到初始化。数组初始化
要定义一个数组,只需要在类型名后加上一对空方括号即可:int[] a1; 或者 int a1[];
编译器不允许指定数组的大小
数组的初始化可以出现在代码的任何地方,但也可以使用一种特殊的初始化表达式,它必须出现在创建数组的地方,即是由一对花括号括起来的值组成的:
int[] a1 = {1,2,3,4,5};
Java中可以将一个数组的值赋值给另一个数组,其实真正做的只是复制了一个引用
public class OverLoading { public static void main(String[] args) { int[] a1 ={1,2,3,4,5}; int[] a2; a2=a1; for(int i=0;i<a2.length;i++) a2[i]=a1[i]+1; for(int i=0;i<a1.length;i++) System.out.println(a1[i]); } }
在不确定在数组里需要多少个元素,可以直接用new在数组里创建元素
int[] a=new int[rand.nextInt(20)];//创建一个基本类型数组 Integer[] a=new Integer[rand.nextInt(20)];//创建一个引用数组
枚举类型
enum关键字,它使得我们在需要群组并使用枚举类型集时,可以很方便地处理参考书《java编程思想》
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树