ASCII码表、Java字符串及其构造方法、判断与获取功能 Java第十天(一)

ASCII码表

图片转自网络,侵转删
图片转自网络,侵转删

字符串(String)

  在 Java 中字符串属于对象。
 在定义String str = "abc;"时,“abc"作为常量存储在数据共享区,定义时首先会到数据共享区中去查找是否存在"abc"这样的字符串,如果存在就将"abc"的内存地址赋给str,若不存在则创建一个"abc”,再将内存地址赋给str。(先在数据共享区查找,若没有则创建,若存在则引用内存地址)
  常量字符串是常量,它们的值在创建后不可更改。
注意:下方代码看似改变了str的值实则没有。
1.在数据共享区中首先会创建"abc"并赋予一个内存地址,并将这个内存地址赋给str。
2.其次在运行时发现数据共享区没有"de",所以在数据共享区中创建"de"并赋予一个内存地址。
3.运行后并不是"abc"修改为"abcde",而是在数据共享区中再创建一个"abcde"并赋予一个内存地址,然后将该内存地址赋给str,所以字符串的值在创建后不可更改。

String str = "abc";
str =  str + "de";

  ①String str = "helloworld";
在数据共享区创建的的是一个字符串的常量对象。
  ②String str1 = new String("helloworld");
先在堆中创建一个字符串的对象,然后再到数据共享区中创建一个字符串的常量的对象,最后再将堆中的对象指向数据共享区的对象。
  注意:若已创建①,那么在创建②时会先在堆中创建②的对象,然后将②堆中的对象直接指向数据共享区中已创建的①的对象。
①和②的内存地址不同,但值相同。

  ③String str = "a";
  ④String str = "a";
 ③和④的值与内存地址都相同

1.String str = "a";
2.String str1 = "b";
3.String str2 = "ab";
System.out.print("a"+"b");

  1和2拼接后一定会产生新的字符串,并与3的内存地址不相同。因为字符串做拼接时,只要存在一个已存在地址的字符串常量,就会产生新地址。
  3和(“a”+“b”)的内存地址相同。因为如果是两个未被引用的常量字符串做拼接,则会去数据共享区中查找,若已存在相等的直接引用,不会重新创建。

 字符串常用构造方法

String() 
初始化新创建的 String对象,使其表示空字符序列。 
例:
String 局部变量名 = new String();
---------------------------------------------------------------------------------
String(byte[] bytes) 
通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。
(将字节数组中每一个数值转换成相应的ASCII的字符,然后组成字符串) 
例: 
String 局部变量名 = new String(byte型的数组名);
	byte[] bs ={
    65,66,67,68,69,70,71};
	String str = new String(bs);
	System.out.println(str);
输出结果:
ABCDEFG	
---------------------------------------------------------------------------------
String(byte[] bytes, int offset, int length) 
通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
(将字节数组作为参数的字符串截取创建一个新的String)
例:
String 局部变量名 = new String(byte型数组名,起始索引,截取长度);
	byte[] bs ={
    65,66,67,68,69,70,71};
	String str = new String(bs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值