@@ -662,20 +662,95 @@ System.out.println(l + 1 == Long.MIN_VALUE); // true
662662- ** 生存时间** :从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。
663663- ** 默认值** :从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被 ` final ` 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。
664664
665+ 成员变量与局部变量代码示例:
666+
667+ ``` java
668+ public class VariableExample {
669+
670+ // 成员变量
671+ private String name;
672+ private int age;
673+
674+ // 方法中的局部变量
675+ public void method () {
676+ int num1 = 10 ; // 栈中分配的局部变量
677+ String str = " Hello, world!" ; // 栈中分配的局部变量
678+ System . out. println(num1);
679+ System . out. println(str);
680+ }
681+
682+ // 带参数的方法中的局部变量
683+ public void method2 (int num2 ) {
684+ int sum = num2 + 10 ; // 栈中分配的局部变量
685+ System . out. println(sum);
686+ }
687+
688+ // 构造方法中的局部变量
689+ public VariableExample (String name , int age ) {
690+ this . name = name; // 对成员变量进行赋值
691+ this . age = age; // 对成员变量进行赋值
692+ int num3 = 20 ; // 栈中分配的局部变量
693+ String str2 = " Hello, " + this . name + " !" ; // 栈中分配的局部变量
694+ System . out. println(num3);
695+ System . out. println(str2);
696+ }
697+ }
698+
699+ ```
700+
665701### 静态变量有什么作用?
666702
667- 静态变量可以被类的所有实例共享。无论一个类创建了多少个对象,它们都共享同一份静态变量。
703+ 静态变量也就是被 ` static ` 关键字修饰的变量。它可以被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量。也就是说,静态变量只会被分配一次内存,即使创建多个对象,这样可以节省内存。
704+
705+ 静态变量是通过类名来访问的,例如` StaticVariableExample.staticVar ` (如果被 ` private ` 关键字修饰就无法这样访问了)。
706+
707+ ``` java
708+ public class StaticVariableExample {
709+ // 静态变量
710+ public static int staticVar = 0 ;
711+ }
712+ ```
668713
669714通常情况下,静态变量会被 ` final ` 关键字修饰成为常量。
670715
716+ ``` java
717+ public class ConstantVariableExample {
718+ // 常量
719+ public static final int constantVar = 0 ;
720+ }
721+ ```
722+
671723### 字符型常量和字符串常量的区别?
672724
673- 1 . ** 形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符。
674- 2 . ** 含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。
675- 3 . ** 占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节。
725+ - ** 形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符。
726+ - ** 含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。
727+ - ** 占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节。
676728
677729⚠️ 注意 ` char ` 在 Java 中占两个字节。
678730
731+ 字符型常量和字符串常量代码示例:
732+
733+ ``` java
734+ public class StringExample {
735+ // 字符型常量
736+ public static final char LETTER_A = ' A' ;
737+
738+ // 字符串常量
739+ public static final String GREETING_MESSAGE = " Hello, world!" ;
740+ public static void main (String [] args ) {
741+ System . out. println(" 字符型常量占用的字节数为:" + Character . BYTES );
742+ System . out. println(" 字符串常量占用的字节数为:" + GREETING_MESSAGE . getBytes(). length);
743+ }
744+ }
745+ ```
746+
747+ 输出:
748+
749+ ```
750+ 字符型常量占用的字节数为:2
751+ 字符串常量占用的字节数为:13
752+ ```
753+
679754## 方法
680755
681756### 什么是方法的返回值?方法有哪几种类型?
@@ -732,6 +807,26 @@ public int f4(int a, int b) {
7328071 . 静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。而非静态成员属于实例对象,只有在对象实例化之后才存在,需要通过类的实例对象去访问。
7338082 . 在类的非静态成员不存在的时候静态方法就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。
734809
810+ ``` java
811+ public class Example {
812+ // 定义一个字符型常量
813+ public static final char LETTER_A = ' A' ;
814+
815+ // 定义一个字符串常量
816+ public static final String GREETING_MESSAGE = " Hello, world!" ;
817+
818+ public static void main (String [] args ) {
819+ // 输出字符型常量的值
820+ System . out. println(" 字符型常量的值为:" + LETTER_A );
821+
822+ // 输出字符串常量的值
823+ System . out. println(" 字符串常量的值为:" + GREETING_MESSAGE );
824+ }
825+ }
826+ ```
827+
828+
829+
735830### 静态方法和实例方法有何不同?
736831
737832** 1、调用方式**
0 commit comments