初学Java简单类(9.26)
1.堆和栈
堆内存空间:保存真正的数据(保存对象属性信息)
栈内存空间:保存堆内存的地址(具有堆内存的操作权)
eg:
第一种情况
Person per = null;表示就是为栈内存保存的per的地址(假设为0x0001),还没有开辟内存,堆内存中没有per的属性信息;
Person per = new Person();表示就是为栈内存保存的per的地址(假设为0x0001),此时会在堆内存中开辟一个新的空间;对应的成员属性均为初始值(String类 为null,int类为0,double类0.0)
per.name = “张三”;表示为堆内存中存放name=“张三”;
per.age = 18;表示堆内存中存放age =18;
引用传递:一个堆内存可以被多个栈内存指引,同一个栈内存只能保存一个堆内容(一个栈存一个地址)
第一种情况
per1.name = “张三”;
per1.age = 18;
Person per2 = per1;
per2.name = “李四”;
上述则表示的意思为:per1和per2分别为两个栈内存,Person per2 = per1;表示把per1的堆内存内容也给per2用,则输出内容为(李四,18)
第二种情况
Person per1 = new Person();per1.name = “张三”;per1.age = 18;
Person per2 = new Person();per2.name= “李四”;per2.age = 20;
per2=per1;
上述表示为:将per1的堆内容给per2;但是per2中有对应的堆内容,则此时必须先将per2的堆内容断开。然后在将per2指引到per1的堆内容,此时原来per2中堆内容就是输垃圾内容,会被java中GC处理掉。
2.描述一个对象
一般规则:
1.类名称可以明确的描述出该事物
2.类中的属性必须使用private,必须使用getter和setter(private只有当前类可以调用其中成员属性,也就是说只以下代码class中才能调用)
3.类中可以有多个构造方法,但必须有一个无参的构造方法
4.类中的所有方法,不能使用输出语句,只能在主方法中使用
5.类中提供一个放回完整信息的方法get Info()
其中getter和setter(使用private必须要用到)
getter:主要用于属性内容的取得
setter:设置和更改的属性内容
(一个对象只能new一次)
类名称 对象名称 = new 类名称();
一般样式
class 类名称{}
成员属性;(一个对象只能new一次)
构造方法;(必须有一个无参的构造方法)
一般方法;
class Student {
private String name;
private int age;
private String number ;
private String sex ;
private String deparment ;
private String hometown ;
public Student() {}//每个java简单类必须包括一个无参的构造方法
public Student(String name,int age, String number,String sex,String deparment,String hometown){
setName(name);
setAge(age) ;
setNumber(number) ;
setSex(sex) ;
setDeparment(deparment) ;
setHometown(hometown) ;
}
public void setName(String na) {
name = na;
}
public void setAge(int a){//定义属性的方法 有参(void)
age = a ;
}
public void setNumber(String n){
number = n ;
}
public void setSex(String s){
sex = s ;
}
public void setDeparment(String d){
deparment = d ;
}
public void setHometown(String h){
hometown = h ;
}
public String getName() {
return name;
}
public int getAge() {
return age ;
}
public String getNumber() {
return number ;
}
public String getSex() {
return sex ;
}
public String getDeparment() {
return deparment ;
}
public String getHometown() {
return hometown ;
}
public String getInfo() {
return "name ="+name+"\n"+
"age = " + age + "\n" +
"number= " + number + "\n" +
"sex = " + sex + "\n" +
"deparment = " + deparment + "\n" +
"hometown = " + hometown ;
}
}
public class StudentDemo {
public static void main(String args[] ) {
System.out.println(new Student("李四",20,"14144203811","男","***学院","***").getInfo()) ;
}
}
public Student() {}//每个java简单类必须包括一个无参的构造方法
public Student(String name,int age, String number,String sex,String deparment,String hometown){
setName(name);
setAge(age) ;
setNumber(number) ;
setSex(sex) ;
setDeparment(deparment) ;
setHometown(hometown) ;
}
public void setName(String na) {
name = na;
}
public void setAge(int a){//定义属性的方法 有参(void)
age = a ;
}
public void setNumber(String n){
number = n ;
}
public void setSex(String s){
sex = s ;
}
public void setDeparment(String d){
deparment = d ;
}
public void setHometown(String h){
hometown = h ;
}
public String getName() {
return name;
}
public int getAge() {
return age ;
}
public String getNumber() {
return number ;
}
public String getSex() {
return sex ;
}
public String getDeparment() {
return deparment ;
}
public String getHometown() {
return hometown ;
}
public String getInfo() {
return "name ="+name+"\n"+
"age = " + age + "\n" +
"number= " + number + "\n" +
"sex = " + sex + "\n" +
"deparment = " + deparment + "\n" +
"hometown = " + hometown ;
}
}
public class StudentDemo {
public static void main(String args[] ) {
System.out.println(new Student("李四",20,"14144203811","男","**学院","**").getInfo()) ;
}
}
一般会遇到一些错误
”NullPointerException” :只出现在引用数据类型(数组,类,接口)
”Initiaialized‘’:表示化变量没有初始
编译只检测代码的语法错误