五面向对象基础上1Word文档格式.docx

上传人:b****6 文档编号:21692651 上传时间:2023-01-31 格式:DOCX 页数:49 大小:4.57MB
下载 相关 举报
五面向对象基础上1Word文档格式.docx_第1页
第1页 / 共49页
五面向对象基础上1Word文档格式.docx_第2页
第2页 / 共49页
五面向对象基础上1Word文档格式.docx_第3页
第3页 / 共49页
五面向对象基础上1Word文档格式.docx_第4页
第4页 / 共49页
五面向对象基础上1Word文档格式.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

五面向对象基础上1Word文档格式.docx

《五面向对象基础上1Word文档格式.docx》由会员分享,可在线阅读,更多相关《五面向对象基础上1Word文档格式.docx(49页珍藏版)》请在冰豆网上搜索。

五面向对象基础上1Word文档格式.docx

}

publicclassDemo01

publicstaticvoidmain(Stringargs[])

Personp1=null;

//声明对象

p1=newPerson();

//实例化对象

p1.name="

张三"

//赋值

p1.age=50;

p1.tell();

对象是保存在栈内存中,属性是保存在堆内存中,方法是保存在全局代码区之中,此区中的内容是所有对象共享的。

如果不实例化会怎么样?

Exceptioninthread"

main"

java.lang.NullPointerException

atDemo01.main(Demo01.java:

19)

在引用操作中如果一个对象没有堆内存的引用,而调用了类中的属性或方法,就会出现空指向异常。

Personp1=newPerson();

Personp2=newPerson();

p2.name="

李四"

p2.age=100;

p2=p1;

p2.tell();

GC:

垃圾收集机制的简称

与垃圾回收有关的知识:

1、finalize()方法

Java有垃圾回收的机制,当一个对象变成垃圾,他所引用的其他对象在没有被别的有效的句柄引用的话,也会随之变成垃圾,也就是不用程序员再去做“释放对象在生存期间所占用的一些资源”这样的事情了finalize()方法是在对象被当着垃圾从内存中释放前调用,而不是在对象变成垃圾前调用,垃圾回收器的启用不由程序员控制,也无规律可循,并不会一产生了垃圾,它就被唤起,甚至有可能到程序终止,它都没有启动的机会。

因此这并不是一个很可靠的机制,所以,我们无法保证每个对象的finalize()方法最终都会被调用。

下面,我们通过程序来了解finalize()方法:

publicvoidfinalize()

theobjectisgoing!

);

publicstaticvoidmain(String[]args)

newPerson();

theprogramisending!

编译运行后的结果是:

在上面的程序中,我们产生了三个匿名对象,这些对象在执行

System.out.println("

语句前都变成了垃圾,但我们并没有看到垃圾回收时finalize方法被调用的效果。

2、System.gc的作用

Java的垃圾回收器被执行的偶然性有时候也会给程序运行带来麻烦,比如说在一个对象成为垃圾时需要马上被释放,或者程序在某段时间内产生大量垃圾时,释放垃圾占据的内存空间似乎成了一件棘手的事情,如果垃圾回收器不被启动,finalize()方法也不会被调用。

为此,Java里提供了一个System.gc()方法,使用这个方法可以强制启动垃圾回收器来会收垃圾

将上面的程序作如下修改:

System.gc();

编译运行的结果如下:

theprogramisending

第二节封装性

封装的目的:

保护内容。

(保证某些属性和方法不被外部所见)

如何访问封装的内容

在java中对于封装性的访问java中给出了明确的原则,被封装的属性如果需要被访问,则需要编写setter和getter方法完成。

如:

privateintage;

Setter(设置):

publicvoidsetAge(intn){}

Getter(取得):

publicintgetAge(){};

setXxx

getXxx

privateStringname;

privateintage;

publicvoidsetName(Stringn)//(Stringname)

name=n;

//this.name=name;

publicvoidsetAge(inta)//(intage)

age=a;

//this.age=age;

publicStringgetName()

returnname;

publicintgetAge()

returnage;

Personp1=null;

p1=newPerson();

p1.setName("

zhangsan"

p1.setAge(-60);

在setter中加入判断条件

publicvoidsetAge()

if(age>

=0&

&

age<

150)

this.age=age;

this.属性名称(表示类中的属性)

第三节构造方法与匿名对象

构造方法的主要作用:

就是给类中的属性初始化。

publicPerson(){}

publicPerson(Stringname)

this.setName(name);

publicPerson(Stringname,intage)

this.setAge(age);

publicvoidsetName(Stringname)

this.name=name;

publicvoidsetAge(intage)

newPerson("

lisi"

100).tell();

newPerson("

1).tell();

第四节String类和StringBuffer类

String类的两种实例化方式

String的两种比较操作

String类的两种实例化方式区别

String使用特点

StringBuffer与String的区别

classStringDemo01

publicstaticvoidmain(String[]args)

Stringname="

System.out.println(name);

classStringDemo02

{Stringname=newString("

//实例化String对象

System.out.println(name);

一个字符串就是String的匿名对象。

classStringDemo03

{intx=100;

inty=100;

System.out.println(x==y);

classStringDemo04

{

Stringstr1="

hello"

Stringstr2=newString("

Stringstr3=str2;

System.out.println(str1==str2);

System.out.println(str1==str3);

System.out.println(str2==str3);

classStringDemo05

System.out.println((str1.equals(str2)));

System.out.println((str1.equals(str3)));

System.out.println((str2.equals(str3)));

Sring有两种比较方式:

1、“==”地址值2、equals比较内容(常用)

classStringDemo06

System.out.println(("

.equals("

)));

String中有个equals方法,我们能用一个字符串调用equals方法,那么字符串肯定是String的匿名对象

classStringDemo07

Stringstr2="

Stringstr3="

直接使用赋值的方式,可以有效的节省内存

如果使用newstring()?

Stringname=newString("

字符串的内容一旦声明将不可改变

StringBuffer

StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的。

StringBuffer类不能像String那样采样直接赋值的方式进行对象的实例化,必须通过构造方法完成。

如果频繁修改字符串的内容则使用StringBuffer类完成。

publicclassDemo{

publicstaticvoidmain(Stringargs[]){

StringBufferbuf=newStringBuffer();

buf.append("

helloworld"

);

for(inti=0;

i<

5;

i++){

buf.append(i);

//StringBuffer可以修改,性能高

}

System.out.println(buf);

};

第五节String类的常用方法

一、字符数组和字符串

1、将字符串转字符数组

publicchar[]toCharArray()

2、将字符数组转字符串

publicString(char[] 

value)

publicString(char[]value,intoffset,intcount)

classStringDemo

//charc[]=str1.toCharArray();

charc[]={'

h'

'

e'

l'

o'

c.length;

i++)

{

System.out.print(c[i]+"

\t"

Stringstr2=newString(c);

Stringstr3=newString(c,0,3);

System.out.println(str2);

System.out.println(str3);

二、从字符串中取出指定位置的字符

publiccharcharAt(int 

index)

classStringDemo

System.out.println(str1.charAt(0));

三、字符串与byte数组的转换

字符串转字节数组

publicbyte[]getBytes()

字节数组转字符串

publicString(byte[] 

bytes)

publicString(byte[]bytes,intoffset,intlength)

classStringDemo

byteb[]=str1.getBytes();

//字符串转字节数组

System.out.println(newString(b));

//字节数组转字符串

System.out.println(newString(b,0,4));

//部分字节数组转字符串

四、取得一个字符串的长度

publicintlength()

helloworld"

System.out.println(str1.length());

五、查找指定的字符串是否存在

publicintindexOf(String 

str)

publicintindexOf(Stringstr,intfromIndex)

jsjfdfjkjv"

System.out.println(str1.indexOf("

x"

));

j"

2));

六、去除空格

publicStringtrim()

helloworld"

System.out.print(str1.trim());

System.out.print("

xxxx"

七、字符截取(如省略该参数,则将从字符串的首字符开始检索。

publicStringsubstring(int 

beginIndex)

publicStringsubstring(intbeginIndex,intendIndex)

hellworld"

System.out.println(str1.substring

(1));

System.out.print(str1.substring(2,6));

八、拆分字符串

publicString[]split(String 

regex)

Strings[]=str1.split("

"

//按空格进行字符串的拆分

s.length;

{

System.out.print(s[i]);

}

九、大小转换

publicStringtoUpperCase()

publicStringtoLowerCase()

System.out.print("

.toUpperCase());

HELLO"

.toLowerCase());

十、判断是否以指定的字符串开头或结尾

publicbooleanstartsWith(String 

prefix)

publicbooleanendsWith(String 

suffix)

###hello"

Stringstr2="

hello###"

if(str1.startsWith("

###"

))

System.out.println(str1);

if(str2.endsWith("

System.out.println(str2);

十一、不区分大小写的比较

publicbooleanequalsIgnoreCase(String 

anotherString)

System.out.println(str1.equals(str2));

System.out.println(str1.equalsIgnoreCase(str2));

十二、字符串替换功能

publicStringreplaceAll(Stringregex,Stringreplacement)

System.out.println(str1.replaceAll("

l"

"

第六节this关键字

表示类中的属性

this.age=age;

publicStringgetIn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1