现在的位置: 首页 > 综合 > 正文

java无难事笔记(五)

2013年10月06日 ⁄ 综合 ⁄ 共 3052字 ⁄ 字号 评论关闭

==以及equal

对于基本数据类型,等于正常使用

对于引用数据类型,==只是判断两个引用变量的值是否相等,也就是判断两个变量存放的地址是否相等,如果要判定两个变量引用所对应的值是否相等,应该用equal

class JavaTest

{

         publicstatic void main(String[] args)

         {

                   Stringstr1 = new String("lai");

                   Stringstr2 = new String("lai");

                   Stringstr3 = str1;

                   if(str1==str2)

                   {

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

                   }

                   else

                   {

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

                   }

                   if(str1==str3)

                   {

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

                   }

                   else

                  {

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

                   }

                   inta = 3;

                   intb = 3;

                   if(a==b)

                   {

                            System.out.println("a==b");

                   }

                   else

                   {

                            System.out.println("a!=b");

                   }

         }

}

 

 

 

 

 

针对String的“+”和“+=”,是Java中唯一被重载的操作符;在Java中,不允许程序员重载操作符。

 

                   StringBuffersb = new StringBuffer();

                   inti = 3;

                   doublef = 6.32;

                   Stringstr1 = "lai";

                   sb.append(str1).append(i).append(f);

                   System.out.println(sb);

输出的时候可以直接写上sb,他会调用valueOf返回一个String对象,

public static StringvalueOf(Object obj)

返回Object 参数的字符串表示形式。

 

String delete删除终止字符的位置为要删除位置的下一个

Stringbuffer insert是指要插入位置的前面

 

数组

 

new关键字

为对象分配内存空间。

引起对象构造方法的调用。

为对象返回一个引用。

Student [] stu = new Student[3];

Classs Student

{

Int age;

StringBuffer name;

Student(int age,StringBuffer sb)

{

This.age = age;

This.name = sb;
}
}

那么new在创建的时候只干了两件事情,一个是返回一个引用,一个是在堆上分配内存,并没有调用构造函数。

写代码验证,确实如此,可以这么认为当后面接上[]的时候不会调用构造函数,当接上()时候会调用构造函数!!!

class Test

{

       Test()

       {

                System.out.println("i'mcalled!");

       }

       public static voidmain(String[] args)

       {

                //Test test =new Test();

                Test[] test =new Test[3];

                test[0] = newTest();

       }

}

 

Main函数讲解

 

函数调用

在Java中,传参时,都是以传值的方式进行。

对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。

Point pt;

System.out.println(pt);

答应对象的时候会返回这个对象的一个字符串,类名+

可以覆盖toString方法,返回需要答应的信息。

 

 

对象克隆

class Student implements Cloneable

{

       String name;

       int age;

       Student(String name,intage)

       {

                this.name =name;

                this.age = age;

       }

       public Object clone()

       {

                Object o =null;

                try

                {

                o =super.clone();

         }

         catch(CloneNotSupportedException e)

         {

              System.out.println(e.toString());

         }

         return o;

       }

}

 

class Test

{

       public static voidmain(String[] args)

       {

                Student stu =new Student("lisi",18);

                Student stu2 =(Student)stu.clone();

       }

}

 

首先是实现Cloneable类,然后覆盖clone函数,调用父类的clone函数,super.clone

把clone函数声明为public,这样别的函数就能调用它了!

注意clone返回的是Object对象,记得把Object对象返回时要强制转换为Object类型!

 

注意一点clone的时候引用只是拷贝引用的地址,其实这两个引用时指向同一份内存地址,切记,因为String是一个长对象,修改的时候会重新分配一块内存,所以没有改变!不同于其它引用

只复制地址是浅层次的拷贝,如果要深层次,可以在引用所对用的那个类来实现clone方法

抱歉!评论已关闭.