• 变量的声明(实例与静态)


      1 /*
      2     什么时候变量声明为实例的,什么时候声明为静态的?
      3         如果这个类型的所有对象的某个属性值都是一样的,
      4         不建议定义为实例变量,浪费内存空间。建议定义
      5         为类级别特征,定义为静态变量,在方法区中只保留
      6         一份,节省内存开销。
      7     
      8     一个对象一份的是实例变量。
      9     所有对象一份的是静态变量。
     10 */
     11 /*
     12 public class StaticTest02{
     13     public static void main(String[] args){
     14         Chinese c1 = new Chinese("1231456456456456","张三","中国");
     15         System.out.println(c1.idCard);
     16         System.out.println(c1.name);
     17         System.out.println(c1.country);
     18 
     19         Chinese c2 = new Chinese("7897897896748564","李四","中国");
     20         System.out.println(c2.idCard);
     21         System.out.println(c2.name);
     22         System.out.println(c2.country);
     23     }
     24 }
     25 
     26 // 定义一个类:中国人
     27 class Chinese{
     28 
     29     // 身份证号
     30     // 每一个人的身份证号不同,所以身份证号应该是实例变量,一个对象一份。
     31     String idCard; 
     32 
     33     // 姓名
     34     // 姓名也是一个人一个姓名,姓名也应该是实例变量。
     35     String name;
     36 
     37     // 国籍
     38     // 对于“中国人”这个类来说,国籍都是“中国”,不会随着对象的改变而改变。
     39     // 显然国籍并不是对象级别的特征。
     40     // 国籍属于整个类的特征。整个族的特征。
     41     // 假设声明为实例变量,内存图是怎样的?
     42     // 假设声明为静态变量,内存图又是怎样的?
     43     String country;
     44 
     45     // 无参数
     46     public Chinese(){
     47     
     48     }
     49 
     50     // 有参数
     51     public Chinese(String s1,String s2, String s3){
     52         idCard = s1;
     53         name = s2;
     54         country = s3;
     55     }
     56 }
     57 */
     58 
     59 public class StaticTest02{
     60     public static void main(String[] args){
     61         // 访问中国人的国籍
     62         // 静态变量应该使用类名.的方式访问
     63         System.out.println(Chinese.country);
     64 
     65         Chinese c1 = new Chinese("1231456456456456","张三");
     66         System.out.println(c1.idCard);
     67         System.out.println(c1.name);
     68 
     69         Chinese c2 = new Chinese("7897897896748564","李四");
     70         System.out.println(c2.idCard);
     71         System.out.println(c2.name);
     72 
     73         // idCard是实例变量,必须先new对象,通过“引用.” 访问
     74         // 错误: 无法从静态上下文中引用非静态 变量 idCard
     75         //System.out.println(Chinese.idCard);
     76     }
     77 }
     78 
     79 // 定义一个类:中国人
     80 class Chinese{
     81 
     82     // 身份证号
     83     // 每一个人的身份证号不同,所以身份证号应该是实例变量,一个对象一份。
     84     String idCard; 
     85 
     86     // 姓名
     87     // 姓名也是一个人一个姓名,姓名也应该是实例变量。
     88     String name;
     89 
     90     // 国籍
     91     // 重点重点五颗星:加static的变量叫做静态变量
     92     // 静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了。
     93     // 静态变量存储在方法区。
     94     static String country = "中国";
     95 
     96     // 无参数
     97     public Chinese(){
     98     
     99     }
    100 
    101     // 有参数
    102     public Chinese(String s1,String s2){
    103         idCard = s1;
    104         name = s2;
    105     }
    106 }
    
    
  • 相关阅读:
    c语言 数组名是常量指针
    c语言 动态数组
    c语言 指针的值
    c语言 &取地址运算符的理解
    c语言 指针与地址的区别
    c语言 指针与数组
    linux cheese摄像机工具在window电脑上显示
    C#实现简单的 Ping 的功能,用于测试网络是否已经联通
    c# 扫描局域网IP列表的几种方法
    c# 遍历局域网计算机(电脑)获取IP和计算机名称
  • 原文地址:https://www.cnblogs.com/HeSC980513/p/13152239.html
Copyright © 2020-2023  润新知