第五章,面向对象基础篇
Posted cathy_mu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章,面向对象基础篇相关的知识,希望对你有一定的参考价值。
5.3 封装性
? 为了解决属性必须封装且又必须访问的矛盾,只要是被封装的属性,必须通过setter和getter方法设置和取得。
? 为前面类的私有属性加上getter和setter方法
Public void setAge(int a){ Age = a; } Public int getAge(){ Return age; }
setter方法可以加上检测代码检测输入的数据是否合法。
5.4构造方法
Person per = null;声明对象时不调用构造方法。 Per = new Person();实例化对象时调用构造方法。
? 构造方法也是可以重载的。只要每个构造方法的参数类型或参数个数不同,即可实现重载。
5.5 匿名对象
匿名对象只在堆内存中开辟空间,而不在栈内存的引用。
new Person("cathy",30).tell(); //匿名对象
5.6 实例讲解
class Student{ private String stuno; public Student(){ public Student(String stuno){ this.setStuno(stuno); } } public float sum(){ return math+english; } public float avg(){ return this.sum/3; }
}
5.7 String
? ==是用来进行地址比较的
Str2 str3指向同一个空间,他们的地址值就是相同的。
内容比较用equals,
str2.equals(str3)
“hello”.equals("hello"),一个字符串可以调用string类中的方法,说明一个字符串就是一个string类的匿名对象。
? String str1 = “hello”;
使用这种方式定义字符串有一个好处,就是如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再重新开辟空间。
String str2 = “hello”; str2==str1.
java中有个字符串池。这种设计叫共享设计,设计思路是,对象池中保存多个对象,新实例化的对象如果已经在池中定义了,则不再重新定义,指向已存在的实例空间。
使用new关键字,无论如何都会重新开一个空间。
对于字符串,就直接赋值,不要采用new。
? 字符串的内容一旦声明不可改变。
非要改变就用stringbuffer类。
? String (char[] value)字符数组变字符串。这是一个构造方法 char[] toCharArray() 字符串变字符数组。这是一个普通方法 char charAt(int index)字符串中取出指定位置字符 int length()字符串长度 String trim() 清除左右两端空格 String[] split(String regex) 按指定字符串拆分
IO操作中经常会遇到字符串与byte数组或char数组之间的转换操作。
? length取得数组的长度。
length()取得字符串的长度。
5.8
5.9 this 关键字
? 可以使用this强调本类中的方法
表示类中的属性
public Person(String name){ name=name; } Vs. public Person(String name){ This.name=name; }
调用本类的构造方法?????????
表示当前对象
以上是关于第五章,面向对象基础篇的主要内容,如果未能解决你的问题,请参考以下文章