博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中String类学习笔记
阅读量:6922 次
发布时间:2019-06-27

本文共 1670 字,大约阅读时间需要 5 分钟。

1.String的两种实例化方式
String str="hello";//直接赋值的方式:String str=new String("hello");//实例化的方式:

 两种实例化方式的比较

public class Test{    public static void main(String args[]){         String str1="hello";     String str2=new String("hello");     String str3=str2;//引用传递,str3直接指向st2的堆内存地址     String str4="hello";     //String类对象==比较,比较的是地址,而不是内容     System.out.println(str1==str2);//false     System.out.println(str1==str3);//false     System.out.println(str3==str2);//true     System.out.println(str1==str4);//true    }}

内存分析图:

构造方法实例化方式的内存图:String str = new String("hello");

 

 

  字符串对象池的概念:

    在字符串中,如果采用直接赋值的方式(String str="hello")进行对象的实例化,则会将匿名对象“hello”放入对象池,每当下一次对不同的对象进行直接赋值的时候会直接利             用池中原有的匿名对象,这样,所有直接赋值的String对象,如果利用相同的“hello”,则String对象==返回true;

案例:对象手工入池

public class TestDemo {    public static void main(String args[]){     String str =new String("hello").intern();//对匿名对象"hello"进行手工入池操作     String str1="hello";     System.out.println(str==str1);//true    }}

两种实例化方式的区别

  1.直接赋值(String str = "hello"):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾;

  2.构造方法(String str=  new String("hello");):会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public  String intern();方法进行手工入池;

  在开发的过程中不会采用构造方法进行字符串的实例化;

避免空指向

   == 和·public boolean equals()比较字符串的区别;

    ==在对字符串比较的时候,对比的是内存地址,而equals比较的是字符串内容,在开发的过程中,equals()通过接受参数,可以避免空指向;

String str = null;if(str.equals("hello")){
//此时会出现空指向异常  ...}if("hello".equals(str)){
//此时equals会处理null值,可以避免空指向异常  ...}

4.String类对象一旦声明则不可以改变;而改变的只是地址,原来的字符串还是存在的,并且产生垃圾

public class TestDemo {    public static void main(String args[]){     String str="hello world";     str="hello";     System.out.println(str);    }}

 

转载于:https://www.cnblogs.com/hu1056043921/p/7272322.html

你可能感兴趣的文章
蓝牙核心技术概述(一):蓝牙概述
查看>>
C++ 成员函数前和函数后加const修饰符区别
查看>>
centos7使用docker搭建fdfs
查看>>
android 6.0上getResources.getColor遭弃用
查看>>
Movie Store OpenCart 自适应主题模板 ABC-0249
查看>>
Java反射在JVM的实现
查看>>
七牛云存储 迁移资源用代码示例 [Java]
查看>>
MMVM模式
查看>>
java验证身份证号码及编码规则和提取相应信息
查看>>
python的一些使用技巧
查看>>
Windows下Nginx+PHP5的安装与配置方法
查看>>
php-----utf8和gbk相互转换
查看>>
CentOS 7 erlang.mk:30: Please upgrade to GNU Make 4
查看>>
基于centos6.7离线安装docker1.7.1
查看>>
apt安装方式 Mongo
查看>>
mount error(13): Permission denied window
查看>>
ubuntu访问window7的共享文件
查看>>
个人的编程命名习惯的几点记录
查看>>
Android中各种JAVA包的功能描述
查看>>
PHP 从数据库读取写入txt文件
查看>>