Java API中String类的用法 1
来源:互联网 发布:淘宝店铺页头装修 编辑:程序博客网 时间:2024/05/29 17:02
Java API中String类的用法 1
java API中String的定义是:
public final class String extends Object implements Serializable, Comparable<String>, CharSequence
由此可知,String是一个类,它具有final 属性就证明它不能被继承。
String类代表字符串,String不是基本数据类型,所以它的大小不确定。字符串是常量,存在方法区的常量池中,它的值在创建后就不能更改。字符串缓冲区支持可变的字符串,因为String对象是不可变的,所以可以共享。
字符串创建时其实是以字符数组的形式接受再赋值给String :
String str = "abc";
等价于:
char data[] = {'a','b','c'};
String str = new String(data);
String 的构造方法:
public String(byte[] bytes) 我们常用的String str = new String("hello world"); 就是这种情况。
String类型的存储:
创建String有两种常用方法:
一种是 String str = "abc";
另一种是 String str =new String("abc") ;
这两种方法存在很大的区别:通过new 获得的String会在堆中开辟一个空间来存储索引,但是值还是存在方法区的常量池中。
下面就具体分析一下两种创建方法的过程:
String s1 = "java";
String s2 =new String("java") ;
第一种:通过字符串赋的方法:这种方法是先在栈空间中创建s1,然后直接到常量池中找,有没有这个字符串,如果有就不用创建了,把它的首地址赋值给s1,如果没有此字符串就新开辟一个空间存储这个字符串,然后把首地址赋值给s1。
第二种:通过new创建对象的方法:这种方法是先在栈空间中创建s2,然后在堆空间中创建一个对象,将地址赋值给,之后就跟直接赋值一样了,先在到常量池中找,有没有这个字符串,如果有就不用创建了,把它的首地址赋值给s2,如果没有此字符串就新开辟一个空间存储这个字符串,然后把首地址赋值给堆空间的对象。
为什么先找,没有再创建呢?
之前说过,String是不可变的,所以它是共享的。
这个过程可以用下面的图说明:
String 类型可以用 + 来连接:
String s = 'hello';
s = s + "world";
这两个s已经不是同一个对象了,因为String自创建了就不会改变,用+ 连接它会另开辟一个空间来存储“helloworld”。
字符串的比较有两种方式"==" 和 equal():
"==" :比较的是地址是否相等,也就是是不是同一个对象;
equal() : 比较的是两个字符串是否相同;
下面举几个例子:
<span style="white-space:pre"></span>String s1 = "hello";String s2 = "world";String s3 = "helloworld";System.out.println(s3 ==(s1+ s2));System.out.println(s3.equals(s1+ s2));System.out.println(s3 == ("hello"+ "world"));System.out.println(s3.equals("hello"+ "world"));返回的结果分别是:false ,true , true, true
0 0
- Java API中String类的用法 1
- Java中string类的用法
- java中String类的常见用法
- Java中String类的一些用法
- java中String的用法
- Java中String的用法
- JAVA中 String的用法
- java中String类中API的实现
- java 基础学习-03 api 中String类的学习
- java中String的操作api
- java中String的操作api 收藏
- java中String的操作api
- java中String的API使用方法
- java.lang.String 中 API 的使用
- Java中String的常用API
- java中String的getBytes的用法
- JAVA中String 用法
- Java中String类的介绍及常见用法
- STC51烧录程序时序分析
- Lab - Darknet
- table 框增一行 减一行 Jquery
- 高校云平台(四):15年上半年考试维护过程中精彩小插曲
- C++中类成员函数未实现,是否能够编译链接通过?
- Java API中String类的用法 1
- Mysql 性能优化(一 慢日志)
- Nginx作为反向代理的简单应用
- Opencv 官方tutorial学习
- mysql绿色版学习
- 生活随感记录
- codeforces 551C(二分)
- 跨浏览器的CSS渐变解决方案
- openfire用户整合 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'xxx.xxx' doesn