Java Study Day5

JavaSE day5:

一、数组(续)
1、多维数组(了解)
java中多维数组的元素是(数组)引用数据类型,故可以有阶梯状的数组,即同级数组的元素个数可以不同
二、类和对象
1、问题:
什么是类? (如:自行车的设计图)
什么是对象? (如:一辆辆的自行车)
为什么要设计类和对象的机制? (面向对象编程)
状态 + 行为
属性 方法
2、面向对象的三大特性 -- 封装性,继承性,多态性
1)封装性:所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。简而言之就是,内部操作对外部而言不可见(保护性)
2)继承性:继承是指这样⼀种能力:它可以使⽤现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
3)多态性:所谓多态就是指⼀个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。
面向对象名词扩展:OOA - 面向对象分析;OOD - 面向对象设计;OOP - 面向对象编程
3、语法
1)定义类的语法
修饰符(modifier) class 类名称 {
1、属性(可有可无)
2、方法(可有可无)
3、构造方法(如果没有定义构造方法,系统会自动生成一个无参构造)允许重载
}
Eg:public class HelloWorld { ...}
1>如何定义属性
修饰符 变量类型 变量名称;
默认值:
2>如何定义方法
修饰符 返回值类型 方法名称(形参列表) {
实现
}
Eg:public static rotate(int[] a,int k) { ...}
3>如何定义构造方法(如果没有明确写出,系统会自动补充一个无参构造方法;有则不补)
修饰符 类名称(形参列表) {
}
2)构造对象的语法 | 对象实例化的语法
create object | instance(动词)
类名称 变量名称 = new 类名称(实参列表)
引用类型 - 类引用
只要出现了关键字new就开辟了内存
一个文件中只能有一个public的类,该类的名称必须和文件名一致
一个类会生成一个 .class 字节码文件
对象中存储的主要是属性,也可以找到方法区中对象对应的类
对象(引用数据类型)必须在实例化后调用,否则会产生NullPointerException(运行时报错),编译时不会出错
Eg:Person p = null;
//定义了一个没有指向任何对象的Person类型的引用(类类型的引用)
Person p = new Person(...);
//定义了一个Person类型的对象
//定义了一个指向Person类型的对象的Person类型的引用(类类型的引用)
垃圾空间:没有任何栈内存指向的堆内存空间
由于匿名对象不会有任何的栈空间所指向,所以使用⼀次后就成为垃圾空间。
4、实例化对象的过程
1)new 关键字 计算对象需要的内存大小,开辟空间,初始化为0x0
p = malloc(sizeof(Person));
memset(p,0x0,sizeof(Person));
2)调用构造方法,对属性初始化
3)构造方法调用结束,返回一个指向新对象的引用
Person tmp = 新的对象;
5、如何访问对象的属性(内部 | 外部)
如何调用对象的方法(内部 | 外部)
1)内部(在类的方法中访问类的属性和调用类的方法)
属性:直接通过属性名称访问即可(出现命名遮挡时用this.属性名)
方法:直接通过过方法名称调用即可
2)外部(在其他类的方法中访问该类的属性和调用该类的方法)
属性:对象的引用.属性名称
方法:对象的引用.方法名称(实参列表)
6、其他(注意区分两种调用)
1)嵌套调用
System.out.println(Arrays.toString(rotate(new int[]{1,2,3,4,5},3)));
分解如下:
int[] tmp1 = new int[]{1,2,3,4,5};
int[] tmp2 = rotate(tmp1,3);
String tmp3 = Arrays.toString(tmp2);
System.out.println(tmp3);
2)链式调用(暂时不能有一个很好的实例)
7、this关键字的使用
1)在构造方法中调用其他构造方法,调用语句必须出现在第一行(形如:this(参数))
2)通过this访问属性或方法(一般出现在发生了命名遮挡的时候)(this.方法名称(参数))
3)this代表的就是当前对象的引用(current object)
普通属性和普通方法,其实都绑定着一个隐含的对象
标准输入 stdin 键盘
标准输出 stdout 屏幕
标准错误 stderr 屏幕

Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5
Java Study Day5

猜你喜欢

转载自blog.51cto.com/14235507/2422526