日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?

發布時間:2024/7/23 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、static修飾的變量和方法,在類加載時即被初始化,可直接通過類名.變量名和類型.方法名進行調用。

2、static修飾的變量,在類加載時會被分配到數據區的方法區。類的實例可共享方法區中的變量。如果static修飾的變量發生改變,那么所有類實例引用的變量都會一起發生改變。

3、static修飾的方法中不能使用this或super,static修飾的方法屬于類的方法,而this或super只是對象的方法。

4、static修飾的方法不能引用非static 修飾的變量, 在類加載過程中,當static修飾的方法加載完成時,非static修飾的變量

還未加載,所以無法引用非static修飾的變量。

5、非static修飾的方法可以引用static 修飾的變量,在類加載過程中,static修飾的變量優先完成加載,所以當非static修飾的方法

完成加載后可以引用static 修飾的變量。

舉例

假設Student 類有static 修飾的變量name和方法getName(String name), 那么是否可以直接通過類名調用呢?

public class Student {

private static String name;

private static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student.name = "Jack Ma";

Student.getName();

}

}

運行結果:

Jack Ma

可見,static 修飾的變量和方法是可以直接通過類名調用的。

那么,在static 修飾的main方法內, Student 對象s1 和s2 是否可以直接調用static 修飾的變量和方法呢?

public class Student {

private static String name;

public static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student s1 = new Student();

s1.name = "大黃";

s1.getName();

Student s2 = new Student();

s2.name = "二黃";

s2.getName();

}

}

運行結果:

大黃

二黃

從運行結果來看,在static 修飾的main方法內,Student 對象s1 和s2 是可以直接調用static 修飾的變量和方法。

如果此時修改static 修飾的變量name方法,那么Student對象s1, s2調用的變量name是否也會一起被修改呢?

public class Student {

private static String name;

public static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student s1 = new Student();

// 修改static 修飾的變量name

s1.name = "Jack";

s1.getName();

Student s2 = new Student();

s2.getName();

}

}

運行結果:

Jack

Jack

從運行結果來看,當對象s1修改了在方法區(數據共享區)的static變量name,那么對象s2調用的static變量name必然會一起被修改。

在static修飾的方法中是否可以應用this呢?

在static修飾的方法中是否可以應用super呢?

在static修飾的方法是否能引用非static 修飾的變量呢?

非static修飾的方法是否能引用static修飾的變量呢?

public class Student {

private static String name;

private int age;

public void getInfo(){

// 非static 方法getInfo()引用static修飾的變量name

System.out.println("姓名:"+ name + ", 年齡" + age);

}

public static void main(String[] args) {

Student s1 = new Student();

//通過類名Student直接調用static 變量 name

Student.name = "Jack Ma";

s1.age = 19;

s1.getInfo();

}

}

運行一下

姓名:Jack Ma, 年齡19

可見,非static修飾的方法可以引用static修飾的變量

總結

以上是生活随笔為你收集整理的java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。