码迷,mamicode.com
首页 > 编程语言 > 详细

Java核心技术(初阶)知识点复习——[8]常量设计和常量池

时间:2020-04-19 19:32:18      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:除了   string   安全   div   stat   ima   机制   class   char   

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

Java核心技术(初阶)知识点复习——[8]常量设计和常量池

标签:除了   string   安全   div   stat   ima   机制   class   char   

原文地址:https://www.cnblogs.com/li7anStrugglePath/p/12732932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!