==和equal
对于基本数据类型,与常规使用相同
对于引用数据类型,==应该使用equal来确定两个引用变量的值是否相等,即,两个变量所在的地址是否相等,而两个变量引用对应的值是否相等
class JavaTest
{
publicstaticvoidmain (string [ ] args ) )。
{
stringstr1=newstring('lai );
stringstr2=newstring('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返回一个字符串对象。
public static string http://www.Sina.com/(objectobj ) ) ) ) ) ) ) ) )。
返回Object参数的字符串表示形式。
删除字符串删除结束字符的位置是要删除的位置的下一个位置
Stringbuffer insert指向要插入的位置之前
数组
new关键字
为对象分配内存空间。
引起对象生成方法的调用。
返回对对象的引用。
Student [] stu=new Student[3];
类累计
>{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方法