Java拾贝不建议作为0基础学习,都是本人想到什么写什么
在Java中主要存在4块内存区域。
栈内存空间:保存所有变量(更准确的说是保存了指向堆内存空间的地址)
堆内存空间:保存每个对象的具体属性内容
全局数据区:保存static类型的属性
全局代码区:保存所有方法定义
static关键字
一个类实例化时会开辟栈内存、堆内存。
栈内存中存放其变量,堆内存中存放对象的属性。每个对象都有自己的属性。
静态属性
如果现在有某属性希望被所有对象共享,那么可以称其为静态(static)属性。也叫全局属性
为举栗子不封装。
public class test5 {
public static void main(String args[]) {
Work work1 = new Work("A",22,"SY");
Work work2 = new Work("B",26,"SY");
work1.Info();
work2.Info();
}
}
class Work {
String name;
int age;
String cityName;
public Work(String name, int age, String cityName) {
this.name = name;
this.age = age;
this.cityName = cityName;
}
public void Info(){
System.out.println(this.name+this.age+this.cityName);
}
}
现有两名SY城的工作者想一起跳槽去TT城,该如何执行代码
public static void main(String args[]) {
Work work1 = new Work("A",22,"SY");
Work work2 = new Work("B",26,"SY");
work1.Info();
work2.Info();
work1.setCityName("TT");
work2.setCityName("TT");
System.out.println("跳槽后");
work1.Info();
work2.Info();
}
/*
A22SY
B26SY
跳槽后
A22TT
B26TT
*/
可以看到确实成功抵达TT城,但如果不止AB两个实例呢?
这时可以使用static,使其被所有对象共享,达成一改全改。
public class test5 {
public static void main(String args[]) {
Work work1 = new Work("A", 22);
Work work2 = new Work("B", 26);
work1.Info();
work2.Info();
Work.cityName="TT";
System.out.println("跳槽后");
work1.Info();
work2.Info();
}
}
class Work {
String name;
int age;
static String cityName="SY";
public Work(String name, int age) {
this.name = name;
this.age = age;
}
public void Info() {
System.out.println(this.name + this.age + this.cityName);
}
}
/*
A22SY
B26SY
跳槽后
A22TT
B26TT
*/
因为cityName被static修饰后被类所拥有,不再局限于某个实例。
可以由类直接调用
//类名.静态属性
Work.cityName="TT";
静态方法
相应的,有静态属性就有静态方法。也叫类方法
静态方法和静态属性相同可以由类直接调用。
类名.方法();
继续使用上述的栗子,但把属性进行封装。
public class test5 {
public static void main(String args[]) {
Work work1 = new Work("A", 22);
Work work2 = new Work("B", 26);
Work.cityName = "TT";//报错,封装后不能直接访问属性
System.out.println("跳槽后");
work1.Info();
work2.Info();
}
}
class Work {
private String name;
private int age;
private static String cityName="SY";
public Work(String name, int age) {
this.name = name;
this.age = age;
}
public void Info() {
System.out.println(this.name + this.age + this.cityName);
}
public static String getCityName() {
return cityName;
}
public static void setCityName(String cityName) {
Work.cityName = cityName;
}
//其他getter和setter
}
修改代码:
Work.cityName = "TT";
标签:Java,拾贝,代码,Work,name,static,第五天,public,String
From: https://www.cnblogs.com/Ocraft/p/17772985.html