zoukankan      html  css  js  c++  java
  • 变量的声明(实例与静态)

      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 }
    
    
  • 相关阅读:
    echarts常用说明
    ionic4打包和ngix配置
    浏览器onbeforeunload
    vue中keepAlive的使用
    面试题
    git使用
    git常用命令
    ajax原理
    关于npm(一)
    React、Vue、Angular对比 ---- 新建及打包
  • 原文地址:https://www.cnblogs.com/HeSC980513/p/13152239.html
Copyright © 2011-2022 走看看