zoukankan      html  css  js  c++  java
  • Java核心技术(初阶)知识点复习——[8]常量设计和常量池

    1.常量

      java中自己定义的“一个”“不会”修改的变量:public,static,final;

      建议变量名字全大写,并以“_”链接;

    注:接口中定义的变量都默认为常量,回顾一下“契约精神”,如:

    1 public interface SpecialAnimal{
    2     String color = "yellow";//默认为:public static final String color = "RED"
    3     public void move();
    4 }
     1 public class Cat implements SpecialAnimal{
     2     public void move(){
     3         System.out.println("I can move")//这里回顾下,实现一个接口必须实现所有的方法
     4     }
     5 
     6     public static void main(String[] args){
     7         Cat cat = new Cat();
     8         cat.color = "white";//报错,因为color默认为常量啦,(认为都是黄猫)
     9     }
    10 }

    2.常量池

      [1]Java为很多基本类型的包装类/字符串都建立常量池,基本类型除了floar和double都封装成了包装类,在内存中有缓存;

      [2]包括:boolean→Boolean;

          byte→Byte;char→Character;u000~u007f

          int→Integer;short→Short;long→Long;-128~127;注意:超过了常量池存储范围时,就不存在缓存了;

          常量字符串都建立常量池缓存机制,同时,存在常量字符串存储的自动优化;

          基本类型自动装箱和拆箱机制,String没有;

      [3]常量化创建方法

    1  Integer a = 10;
    2  String b = "abc";
    3 ******************************
    4  Integer c = new Integer(10);
    5  String d = new String("abc");

       1~2行是字面量(常量式)赋值创建,存储在栈内存,即被常量化;

       3~4行是对象形式创建,存储在堆内存,不会被常量化;

    3.String是一种典型的不可变对象

      [1]故String类型不可直接修改,因为每次修改都重新申请了一块内存,故效率差;

      [2]只可以使用StringBuffer和StringBulider类的append方法进行原地址修改;

       StringBuffer线程安全但速度小于StringBulider

  • 相关阅读:
    0313学习进度条
    0311 了解和熟悉操作系统实验
    学习进度条博客
    0302 关于就业的感想
    1230递归下降语法分析程序设计
    有限自动机的构造和识别
    评论
    C语言文法
    编译原理第二次作业——词法分析心得
    0428团队项目2.0
  • 原文地址:https://www.cnblogs.com/li7anStrugglePath/p/12732932.html
Copyright © 2011-2022 走看看