String类构造方法

 package pack1;
//推荐使用直接赋值的方式得到字符串
public class test {
public static void main(String[] args) {
//public String(): 创建一个空白字符串对象,不含有任何内容
String s1=new String();
System.out.println("s1:"+s1); //"s1: " //public String(char[] chs):根据字符数组的内容,来创建字符串内容
char[] chs={'a','b','c'};
String s2=new String(chs);
System.out.println("s2: "+s2); //"s2: abc" //public String(byte[] bys): 根据字节数组的内容,来创建对象
byte[] bys={97,98,99};
String s3=new String(bys);
System.out.println("s3: "+s3); // "s3: abc" //public s="abc"; 直接赋值方式创建字符串对象,内容就是abc
String s4="abc";
System.out.println("s4 "+s4); //"s4: abc"
}
}

String类特点:

变量s1,s2,s3,s4在main函数的栈内存中,他们指向堆内存地址。char数组首先在栈内存开辟空间,然后new String()操作在堆内存中创建索引变量ref(用来链接堆内存中数组的首地址),可以看出s1,s2指向的地址是不同的,但是他们的堆内存中的索引都指向char数组。再来看s3,s4,用String s=“abc”方式创建出来的对象,字符串会被存储在堆内存中的常量池,如果有别的对象也用该方式创建,并且字符串完全一致,则共享常量池内的该字符串。

注意:如果再来一句 s3="hdu"; s4的值会改变么?我试了一下,发现s4是不会改变的,所以执行该语句时,是又在堆内存的常量池中创建了一个“hdu”字符串,然后将其首地址赋给了s3,期间并不会改变s3所指向的地址,也不会改变常量池中的“abc”字符串。

String类对象的比较

 package pack1;
//推荐使用直接赋值的方式得到字符串
public class test {
public static void main(String[] args) {
//构造函数得到对象
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs); //直接赋值的方式得到对象
String s3="abc";
String s4="abc"; //比较字符串对象地址是否相同
System.out.println(s1==s2); //false
System.out.println(s1==s3); //false
System.out.println(s3==s4); //true
System.out.println("------------"); //比较字符串内容是否相同
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s1.equals(s4)); //true
}
}

21.Java基础_String类的更多相关文章

  1. java基础-Arrays类常用方法介绍

    java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...

  2. java基础-System类常用方法介绍

    java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...

  3. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  4. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

  5. java基础-BigInteger类常用方法介绍

    java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...

  6. java基础-Math类常用方法介绍

    java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...

  7. java基础-Integer类常用方法介绍

    java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...

  8. Java基础-Calendar类常用方法介绍

    Java基础-Calendar类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Calendar类概念 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 Y ...

  9. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

随机推荐

  1. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  2. Django出错提示TemplateDoesNotExist at /

    Issue: 打开login URL的时候报错如下: Action: 在setting.py中修改DIRS,模板文件目录 TEMPLATES = [ { 'BACKEND': 'django.temp ...

  3. 关于xshell连接limux界面按退格键不正常的问题

    这个问题通过修改xshell终端属性可以解决,步骤如下: "文件" -> "属性" -> "终端" -> "键盘 ...

  4. MySQL的基础架构

    TCP/IP看不下去了,我觉得还是从应用层入手,接下来2个月我将主要学习数据库相关和算法知识,网络我一直不熟,所以看起专业书籍很吃力,可以说是浪费时间,这次数据库学习目标是先将方向纠正一下,然后其中的 ...

  5. Java之Scanner类

    Scanner类概述 一个可以解析基本类型和字符串的简单文本扫描器.简而言之,Scanner类的功能:可以实现键盘输入数据,到程序当中. 例如,以下代码使用户能够从 System.in 中读取一个数. ...

  6. iOpenWorskSDK下载和答疑贴

    1 iOpenWorksSDK对VS2013-VS2017的支持插件 https://files.cnblogs.com/files/baihmpgy/iOpenWorksSDK.vsix.zip 2 ...

  7. vscode源码分析【八】加载第一个画面

    第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...

  8. vscode源码分析【一】从源码运行vscode

    安装git,nodejs和yarn 安装Python27,3.x版本的不行,确保它在你的环境变量里: 安装gulp npm install --global gulp-cli 安装windows bu ...

  9. Unity 利用Cinemachine快速创建灵活的相机系统

    在第一或第三人称ACT和FPS游戏中,相机的运动需求是多种多样的,Unity内置的Cinemachine包可以助你快速实现不同相机功能,例如范围追踪,边界设置等. 例如,考虑这样一个功能,这在很多游戏 ...

  10. VSCode中代码在浏览器中打开及实时刷新

    实时刷新方法一: 在项目目录下运行命令: browser-sync start --server --files "**/*.css,**/*.html,**/*.js" 实施刷新 ...