zoukankan      html  css  js  c++  java
  • 关于常量池-----小例子

    package com.xdf;
    
    import org.junit.Test;
    
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Set;
    
    public class HashSetDemo {
    
    
        @Test
        public  void  testHashSet(){
            String  a="abc";
            String  b="abc";
            String  c=new String("abc");
            System.out.println(a.hashCode());
            System.out.println(b.hashCode());
            System.out.println(c.hashCode());
            System.out.println(a.hashCode()==b.hashCode());
            System.out.println(a.hashCode()==c.hashCode());
    
        }
    
    
    
    
        @Test
        public  void  testString(){
    
            /**
             *   01.在栈中开辟空间存储a
             *   02.拿“abc”字符串去常量池中查询有没有,因为我们是第一次创建,所以没有
             *   03.在常量池中开辟空间存储"abc"
             *   04.栈中的a就指向了常量池中的"abc"地址
             */
            String  a="abc";
            /**
             *   01.在栈中开辟空间存储b
             *   02.拿“abc”字符串去常量池中查询有没有,有
             *   03.在常量池中不会开辟空间存储
             *   04.栈中的b就指向了常量池中的"abc"原有地址
             */
            String  b="abc";
            /**
             *   01.在栈中开辟空间存储c
             *   02.拿“abc”字符串去常量池中查询有没有
             *   有:直接去堆中开辟空间保存"abc"
             *   没有:在常量池中开辟空间存储"abc",之后再去堆中开辟空间保存"abc"
             *   03.栈中的c指向了堆的"abc"
             *
             */
            String  c=new String("abc");
            System.out.println(a==b);
            System.out.println(a==c);
            System.out.println(a.equals(c));
        }
    
    
    
        @Test
        public   void  testIntern(){
            String  a="abc";
            String  b=new String("abc");
            String  c=new String("abc");
            System.out.println(a==b);
            System.out.println(a==b.intern()); //让b去常量池中寻找引用
            System.out.println(c.intern()==b.intern()); //让bc去常量池中寻找引用
        }
        @Test
        public   void  testFinal(){
            /**
             * 创建了3个变量
             *  常量
             */
             String  a="abc";
                     a="bcd";
          final   String  b="a";
          final   String  c="bc";
          System.out.println(a==(b+c));//不会自动拼接abc
        }
    
    
        /**
         *  -128 127 存在常量池中
         */
        @Test
        public  void  testInt(){
            Integer num1=128;
            Integer num2=128;
            Integer num3=new Integer(128);
            System.out.println(num1==num2);
            System.out.println(num1==num3);
        }
    
    }
  • 相关阅读:
    [团队项目]典型用户
    0415 操作系统_实验二、作业调度模拟程序
    0415 结对2.0评价
    复利计算- 结对2.0--复利计算WEB升级版
    0408汉堡
    复利计算- 结对1.0
    0405《构建之法》第四章读后感
    复利计算器4.0 【java版】
    复利计算器的单元测试结果
    操作系统 实验一、命令解释程序的编写实验
  • 原文地址:https://www.cnblogs.com/SFHa/p/9673882.html
Copyright © 2011-2022 走看看