用wordpress搭建目录网站,网站建设与服务技能实训,开发小程序多少钱一个,如何做新闻自动采集网站成员变量VS局部变量的区别 语法形式#xff1a;从语法形式上看#xff0c;成员变量是属于类的#xff0c;而局部变量是在代码块或方法中定义的变量或是方法的参数#xff1b;成员变量可以被 public,private,static 等修饰符所修饰#xff0c;而局部变量不能被访问控制修饰…成员变量VS局部变量的区别 语法形式从语法形式上看成员变量是属于类的而局部变量是在代码块或方法中定义的变量或是方法的参数成员变量可以被 public,private,static 等修饰符所修饰而局部变量不能被访问控制修饰符及 static 所修饰但是成员变量和局部变量都能被 final 所修饰。存储方式从变量在内存中的存储方式来看如果成员变量是使用 static 修饰的那么这个成员变量是属于类的如果没有使用 static 修饰这个成员变量是属于实例的。而对象存在于堆内存局部变量则存在于栈内存。生存时间从变量在内存中的生存时间上看成员变量是对象的一部分它随着对象的创建而存在而局部变量随着方法的调用而自动生成随着方法的调用结束而消亡。默认值从变量是否有默认值来看成员变量如果没有被赋初始值则会自动以类型的默认值而赋值一种情况例外:被 final 修饰的成员变量也必须显式地赋值而局部变量则不会自动赋值。
为什么成员变量有默认值 先不考虑变量类型如果没有默认值会怎样变量存储的是内存地址对应的任意随机值程序读取该值运行会出现意外。 默认值有两种设置方式手动和自动根据第一点没有手动赋值一定要自动赋值。成员变量在运行时可借助反射等方法手动赋值而局部变量不行。 对于编译器javac来说局部变量没赋值很好判断可以直接报错。而成员变量可能是运行时赋值无法判断误报“没默认值”又会影响用户体验所以采用自动赋默认值。
成员变量与局部变量代码示例
public class VariableExample {// 成员变量private String name;private int age;// 方法中的局部变量public void method() {int num1 10; // 栈中分配的局部变量String str Hello, world!; // 栈中分配的局部变量System.out.println(num1);System.out.println(str);}// 带参数的方法中的局部变量public void method2(int num2) {int sum num2 10; // 栈中分配的局部变量System.out.println(sum);}// 构造方法中的局部变量public VariableExample(String name, int age) {this.name name; // 对成员变量进行赋值this.age age; // 对成员变量进行赋值int num3 20; // 栈中分配的局部变量String str2 Hello, this.name !; // 栈中分配的局部变量System.out.println(num3);System.out.println(str2);}
}
静态变量的作用 静态变量也就是被 static 关键字修饰的变量。它可以被类的所有实例共享无论一个类创建了多少个对象它们都共享同一份静态变量。也就是说静态变量只会被分配一次内存即使创建多个对象这样可以节省内存。 静态变量是通过类名来访问的例如StaticVariableExample.staticVar如果被 private关键字修饰就无法这样访问了。 通常情况下静态变量会被 final 关键字修饰成为常量。
public class StaticVariableExample {// 静态变量public static int staticVar 0;// 常量public static final int constantVar 0;
}字符型常量和字符串常量的区别
形式 : 字符常量是单引号引起的一个字符字符串常量是双引号引起的 0 个或若干个字符。含义 : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。占内存大小字符常量只占 2 个字节; 字符串常量占若干个字节。
⚠️ 注意 char 在 Java 中占两个字节。 字符型常量和字符串常量代码示例
public class StringExample {// 字符型常量public static final char LETTER_A A;// 字符串常量public static final String GREETING_MESSAGE Hello, world!;public static void main(String[] args) {System.out.println(字符型常量占用的字节数为Character.BYTES);System.out.println(字符串常量占用的字节数为GREETING_MESSAGE.getBytes().length);}
}输出结果 更多消息资讯请访问昂焱数据。昂焱数据