Java的常用包
n java.applet:包含一些用于创建Java小应用程序的类。
n java.awt:包含一些用于编写与平台无关的图形界面(GUI)应用程序的类。
n java.io:包含一些用作输入输出(I/O)处理的类。
n java.lang:包含一些Java语言的基本类与核心类,如String、Math、Integer、System和Runtime,提供常用的功能,这个包中的所有类是被隐式导入的。
n java.net:包含用于建立网络连接的类,与java.io同时使用完成与网络有关的读写。
n java.util:包含一些实用工具类和数据结构类。
在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型,其余的都是引用类型。
“==”是比较两个变量的值是否相等,“equals”是比较两个对象变量所代表的对象的内容是否相等。
String str1 = new String("abc");
String str2 = new String("abc");
str1 == str2;
str1.equals(str2);
String和StringBuffer
str1 = str2;
int a = 3;
float f = 3.5f;
char ch = 'f';
boolean b = false;
System.out.println(str1+a+f+ch+b);
StringBuffer sb = new StringBuffer();
sb.append(a).append(f).append(ch).append(b);
System.out.println(sb.toString());
System.out.println(sb);//一样结果
数组的内存分配
int[] num = new int[3];
for(int i = 0; i<num.length; i++){
System.out.print(num[i]);
}//输出为0
num = null;//num 就不再指向那块内存空间,那块内存变成垃圾内存
对象数组的内存分配
Student[] students;
students = new Student[3];
for(int i = 0; i<students.length(); i++){
System.out.println(students[i]);
}//打印出null
函数的调用
n 在Java中,传参时,都是以传值的方式进行。
n 对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。
示例:
//数组也是引用类型!
public class StringTest {
public static void change(int x, int y){
x = x + y;
y = x - y;
x = x - y;
}
public static void change(int[] num){
num[0] = num[0] + num[1];
num[1] = num[0] - num[1];
num[0] = num[0] - num[1];
}
public static void change(point p){
p.x = p.x + p.y;
p.y = p.x - p.y;
p.x = p.x - p.y;
}
public static void main(String[] args) {
int x = 3;
int y = 4;
change(x,y);
System.out.println("x="+x+",y="+y);
point pt = new point();
pt.x = 3;
pt.y = 4;
change(pt);
System.out.println("x="+pt.x+",y="+pt.y);
//若改写了Point中的toString 方法,则可如此书写:
//System.out.println(pt);
int[] num = new int[2];
for(int i = 0; i<num.length; i++){
num[i] = i;
}
change(num);
System.out.println("x="+num[0]+",y="+num[1]);
}
}
class point{
int x;
int y;
public String toString(){
return "x="+x+","+"y="+y;
}
}
对象的克隆(clone)
n 为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。
n 在派生类中覆盖基类的clone()方法,并声明为public。
n 在派生类的clone()方法中,调用super.clone()。
n 在派生类中实现Cloneable接口。
示例:
public class StringTest {
public static void main(String[] args) {
Student s1 = new Student("WangWu",24);
Student s2 = (Student)s1.clone();
s2.name = "LiLiu";
s2.age = 21;
System.out.println("s1.name:"+s1.name+",s1.age:"+s1.age);
}
}
//其实Cloneable接口中中没有要实现的方法,只是声明可以克隆了
class Student implements Cloneable{
String name;
int age;
Student(String name, int age){
this.name = name ;
this.age = age ;
}
public Object clone(){
Student o = null;
try {
o = (Student)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
s1的信息并没有改变
示例2:
public class StringTest {
public static void main(String[] args) {
Professor p = new Professor("LiSir",35);
Student s1 = new Student("WangWu",24,p);
Student s2 = (Student)s1.clone();
s2.p.name = "LiuSir";
s2.p.age = 31;
System.out.println("name="+s1.p.name+","+"age="+s1.p.age);
}
}
//其实Cloneable接口中中没有要实现的方法,只是声明可以克隆了
class Professor {
String name;
int age;
Professor(String name, int age){
this.name = name;
this.age = age;
}
}
class Student implements Cloneable{
String name;
int age;
Professor p;
Student(String name, int age, Professor p){
this.name = name ;
this.age = age ;
this.p = p;
}
public Object clone(){
Student o = null;
try {
o = (Student)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
s1中Professor的信息会改变,普通数据类型的clone()是值得复制,而引用类型的clone()是对引用的复制
如何改进?如下:
示例3:
public class StringTest {
public static void main(String[] args) {
Professor p = new Professor("LiSir",35);
Student s1 = new Student("WangWu",24,p);
Student s2 = (Student)s1.clone();
s2.p.name = "LiuSir";
s2.p.age = 31;
System.out.println("name="+s1.p.name+","+"age="+s1.p.age);
}
}
//其实Cloneable接口中中没有要实现的方法,只是声明可以克隆了
class Professor implements Cloneable{
String name;
int age;
Professor(String name, int age){
this.name = name;
this.age = age;
}
public Object clone(){
Professor o = null;
try {
o = (Professor)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
class Student implements Cloneable{
String name;
int age;
Professor p;
Student(String name, int age, Professor p){
this.name = name ;
this.age = age ;
this.p = p;
}
public Object clone(){
Student o = null;
try {
o = (Student)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.p = (Professor)p.clone();
return o;
}
}
结果:name=LiSir,age=35