1、public class Demo01 public static void main(String args) Person p1 = null;/声明对象 p1 = new Person();/实例化对象 p1.name=张三/赋值 p1.age=50; p1.tell();对象是保存在栈内存中,属性是保存在堆内存中,方法是保存在全局代码区之中,此区中的内容是所有对象共享的。如果不实例化会怎么样?Exception in thread main java.lang.NullPointerException at Demo01.main(Demo01.java:19)在引用操作中如果一个对象
2、没有堆内存的引用,而调用了类中的属性或方法,就会出现空指向异常。 Person p1 =new Person(); Person p2 =new Person(); p2.name =李四 p2.age=100; p2=p1; p2.tell();GC:垃圾收集机制的简称与垃圾回收有关的知识:1、finalize()方法Java有垃圾回收的机制,当一个对象变成垃圾,他所引用的其他对象在没有被别的有效的句柄引用的话,也会随之变成垃圾,也就是不用程序员再去做“释放对象在生存期间所占用的一些资源”这样的事情了finalize()方法是在对象被当着垃圾从内存中释放前调用,而不是在对象变成垃圾前调用,垃
3、圾回收器的启用不由程序员控制,也无规律可循,并不会一产生了垃圾,它就被唤起,甚至有可能到程序终止,它都没有启动的机会。因此这并不是一个很可靠的机制,所以,我们无法保证每个对象的finalize()方法最终都会被调用。下面,我们通过程序来了解finalize()方法: public void finalize()the object is going!); public static void main(String args) new Person();the program is ending!编译运行后的结果是:在上面的程序中,我们产生了三个匿名对象,这些对象在执行 System.out.
4、println(语句前都变成了垃圾,但我们并没有看到垃圾回收时finalize方法被调用的效果。2、System.gc的作用Java的垃圾回收器被执行的偶然性有时候也会给程序运行带来麻烦,比如说在一个对象成为垃圾时需要马上被释放,或者程序在某段时间内产生大量垃圾时,释放垃圾占据的内存空间似乎成了一件棘手的事情,如果垃圾回收器不被启动,finalize()方法也不会被调用。为此,Java里提供了一个System.gc()方法,使用这个方法可以强制启动垃圾回收器来会收垃圾将上面的程序作如下修改: System.gc();编译运行的结果如下:the program is ending第二节 封装性封
5、装的目的:保护内容。(保证某些属性和方法不被外部所见)如何访问封装的内容 在java中对于封装性的访问java中给出了明确的原则,被封装的属性如果需要被访问,则需要编写setter和getter方法完成。如:private int age; Setter(设置): public void setAge(int n)Getter(取得):public int getAge();setXxxgetXxx private String name; private int age; public void setName(String n) /(String name) name=n; /this.n
6、ame=name; public void setAge(int a) /(int age) age=a; /this.age=age; public String getName() return name; public int getAge() return age; Person p1=null; p1=new Person(); p1.setName(zhangsan p1.setAge(-60);在setter中加入判断条件 public void setAge() if(age=0&age150) this.age=age;this.属性名称(表示类中的属性)第三节 构造方法与匿
7、名对象构造方法的主要作用:就是给类中的属性初始化。 public Person() public Person(String name) this.setName(name); public Person(String name,int age) this.setAge(age); public void setName(String name) this.name=name; public void setAge(int age) new Person(lisi,100).tell(); new Person(,1).tell();第四节 String类和StringBuffer类 Stri
8、ng类的两种实例化方式 String的两种比较操作 String类的两种实例化方式区别 String使用特点 StringBuffer与String的区别class StringDemo01 public static void main(String args) String name= System.out.println(name);class StringDemo02 String name =new String(/ 实例化String对象 System.out.println(name);一个字符串就是String的匿名对象。class StringDemo03 int x=100
9、; int y=100; System.out.println(x=y);class StringDemo04 String str1=hello String str2=new String( String str3=str2; System.out.println(str1=str2); System.out.println(str1=str3); System.out.println(str2=str3);class StringDemo05 System.out.println(str1.equals(str2); System.out.println(str1.equals(str3
10、); System.out.println(str2.equals(str3);Sring有两种比较方式:1、“=” 地址值 2、equals 比较内容(常用)class StringDemo06 System.out.println(.equals();String中有个equals方法,我们能用一个字符串调用equals方法,那么字符串肯定是String的匿名对象class StringDemo07 String str2 = String str3 =直接使用赋值的方式,可以有效的节省内存如果使用new string()?String name =new String(字符串的内容一旦声
11、明将不可改变StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的。 StringBuffer类不能像String那样采样直接赋值的方式进行对象的实例化,必须通过构造方法完成。如果频繁修改字符串的内容则使用StringBuffer类完成。public class Demo public static void main(String args) StringBuffer buf = new StringBuffer()
12、 ; buf.append(hello world) ; for(int i=0;i5;i+) buf.append(i); / StringBuffer可以修改,性能高 System.out.println(buf) ;第五节String类的常用方法一、 字符数组和字符串1、 将字符串转字符数组 public char toCharArray()2、 将字符数组转字符串public String(charvalue)public String(char value, int offset,int count) class StringDemo /char c=str1.toCharArray
13、(); char c=h,eloc.length;i+) System.out.print(ci+t String str2=new String(c); String str3=new String(c,0,3); System.out.println(str2); System.out.println(str3);二、从字符串中取出指定位置的字符public char charAt(intindex)class StringDemo System.out.println(str1.charAt(0);三、 字符串与byte数组的转换 字符串转字节数组public byte getBytes
14、() 字节数组转字符串public String(bytebytes)public String(byte bytes,int offset,int length) class StringDemo byte b=str1.getBytes();/字符串转字节数组 System.out.println(new String(b);/字节数组转字符串 System.out.println(new String(b,0,4);/部分字节数组转字符串四、 取得一个字符串的长度public int length()helloworld System.out.println(str1.length();
15、五、 查找指定的字符串是否存在public int indexOf(Stringstr)public int indexOf(String str,int fromIndex)jsjfdfjkjv System.out.println(str1.indexOf(x);j,2);六、去除空格public String trim() hello world System.out.print(str1.trim(); System.out.print(xxxx七、字符截取(如省略该参数,则将从字符串的首字符开始检索。public String substring(intbeginIndex)publ
16、ic String substring(int beginIndex,int endIndex)hell world System.out.println(str1.substring(1); System.out.print(str1.substring(2,6);八、拆分字符串public String split(Stringregex) String s=str1.split( /按空格进行字符串的拆分s.length; System.out.print(si); 九、大小转换public String toUpperCase()public String toLowerCase()
17、System.out.print( .toUpperCase();HELLO.toLowerCase();十、判断是否以指定的字符串开头或结尾public boolean startsWith(Stringprefix)public boolean endsWith(Stringsuffix)#hello String str2=hello# if(str1.startsWith(#) System.out.println(str1); if(str2.endsWith( System.out.println(str2);十一、不区分大小写的比较public boolean equalsIgnoreCase(StringanotherString) System.out.println(str1.equals(str2); System.out.println(str1.equalsIgnoreCase(str2);十二、字符串替换功能public String replaceAll(String regex,String replacement) System.out.println(str1.replaceAll(l,第六节this关键字表示类中的属性 this.age=age; public String getIn
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1