String类详解(1)
首先String是一个类。
1,实例化String类方法。
1)直接赋值:String name="haha";
2)通过关键字:String name=new String("haha");
2,String类的数据比较。
首先回顾一下,基础数据的比较使用"=="比较。
- public class StringDemo04{
- public static void main(String args[]){
- String str1 = "hello" ; // 直接赋值
- String str2 = new String("hello") ; // 通过new赋值
- String str3 = str2 ; // 传递引用,共用一个堆地址空间。
- System.out.println("str1 == str2 --> " + (str1==str2)) ; // false
- System.out.println("str1 == str3 --> " + (str1==str3)) ; // false
- System.out.println("str2 == str3 --> " + (str2==str3)) ; // true
- }
- };
现在使用的判断相等是判断地址空间相等,判断的值是地址值。
如果要想判断其内存是否相等,则必须要使用String类中提供的equals()方法完成。
此方法使用如下:
- public class StringDemo05{
- public static void main(String args[]){
- String str1 = "hello" ; // 直接赋值
- String str2 = new String("hello") ; // 通过new赋值
- String str3 = str2 ; // 传递引用
- System.out.println("str1 equals str2 --> " + (str1.equals(str2))) ; // true
- System.out.println("str1 equals str3 --> " + (str1.equals(str3))) ; // true
- System.out.println("str2 equals str3 --> " + (str2.equals(str3))) ; // true
- }
- };
结论:String两种比较方式:
1)一种是“==”比较的是地址值。
2)一种使用equals()完成,比较的是具体的内容,比较常用。
3,两种实例化的区别。
字符串的特征:
1)一个字符串就是String的匿名对象。(即没有分配栈内存空间)
- public class StringDemo06{
- public static void main(String args[]){
- System.out.println("hello".equals("hello")) ;
- }
- };
了解此后,实际之前操作:
String name="hehe";
就表示将一个堆内存空间指给了栈内存空间。
只有掌握了这一点后,才能分析出使用哪种方式实例化更合适。
- public class StringDemo07{
- public static void main(String args[]){
- String str1 = "hello" ; // 直接赋值
- String str2 = "hello" ; // 直接赋值
- String str3 = "hello" ; // 直接赋值
- System.out.println("str1 == str2 --> " + (str1==str2)) ; // true
- System.out.println("str1 == str3 --> " + (str1==str3)) ; // true
- System.out.println("str2 == str3 --> " + (str2==str3)) ; // true
- }
- };
这里没有用equals()方法,但是都是ture。
以上三个的内存地址都一样,
因为三个对象指向同一个堆内存空间,所有使用直接赋值能够节省内存空间。
而使用new String()方式。
- public class StringDemo08{
- public static void main(String args[]){
- String str1 = new String("hello") ;
- }
- };
、
使用直接赋值方式只要一个空间即可,而new String()则会开辟两个地址空间。所以最好使用直接赋值。
2)字符串的内容不可改变。
这是一个重要特征。
- public class StringDemo09{
- public static void main(String args[]){
- String str = "hello" ; // 声明字符串
- str = str + " world!!!" ; // 修改字符串
- System.out.println("str = " + str) ;
- }
- };
这里字符串对象是改变了,但是字符串并没有改变。
实际上字符串内容的改变,改变的只是内存地址的引用关系。
所以在开发中要避免以下情况出现。
- public class StringDemo10{
- public static void main(String args[]){
- String str1 = "LiXingHua" ; // 声明字符串对象
- for(int i=0;i<100;i++){ // 循环修改内容
- str1 += i ; // 字符串的引用不断改变
- }
- System.out.println(str1) ;
- }
- };
但是这样的操作,要断开连接100次才能完成。这种操作性能很低,应避免使用。
String类详解(1)的更多相关文章
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- java 复习整理(四 String类详解)
String 类详解 StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上S ...
- STL之string类详解
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类 ...
- Java的String类详解
Java的String类 String类是除了Java的基本类型之外用的最多的类, 甚至用的比基本类型还多. 同样jdk中对Java类也有很多的优化 类的定义 public final class S ...
- String类详解,StringBuffer
先说一下String类的equals()方法. 下面我们先看一段代码: 这段代码输出的结果为: ture true -------------- false 咋看之下貌似Object类比较特别,那么我 ...
- Java常用类(一)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- String类详解
看了很多文章事实证明之前的通过new创建String对象只有一个是错误的,实际上创建一个或者创建两个对象,一个在堆区,一个在常量池,当常量池中已经存在就不会创建.看了一篇非常好的文章http://ww ...
- 深入理解String类详解
1.Stringstr = "eee" 和String str = new String("eee")的区别 先看一小段代码, 1 public static ...
- C++ string 类详解
字符串是存储在内存的连续字节中的一系列字符.C++ 处理字符串的方式有两种,一种来自 C 语言,常被称为 C-风格字符串,另一种是基于 string 类库的字符串处理方式.C 风格字符串的处理可以参考 ...
随机推荐
- C# 线程同步
Mutex 类 使用Mutex类来同步两个单独的程序.Mutex是一种原始的同步方式,其只对一个线程授予对共享资源的独占访问. const string NutexName = "C&quo ...
- R语言学习笔记:分析学生的考试成绩
孩子上初中时拿到过全年级一次考试所有科目的考试成绩表,正好可以用于R语言的统计分析学习.为了不泄漏孩子的姓名,就用学号代替了,感兴趣可以下载测试数据进行练习. num class chn math e ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q85-Q87)
Question 85You create a Microsoft .NET Framework console application that uses a Representational St ...
- Android拍照保存在系统相册不显示的问题
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(new File(& ...
- OC小实例关于init方法不小心的错误
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 使用batch insert解决MySQL的insert吞吐量问题
最近使用了一个非常简单易用的方法解决了业务上的一个insert吞吐量的问题,在此总结一下. 首先我们明确一下,insert吞吐量其实并不是指的IPS(insert per second),而是指的RP ...
- img标签使用默认图片的一种方式
基于html5提供的onerror这个时间属性.
- 写过的一些Oracle相关的博客
Oracle体系结构:http://blog.chinaunix.net/uid/25909722/cid-164523-list-1.html Oracle优化:http://blog.chinau ...
- hping3
[root@zxserver104 ~]# hping3 -c -d -S -w -p --flood --rand-source 115.236.6x.19x 1. hping3 = 应用程序二进制 ...
- php基本语法
<?phpecho "hello test01";$var ="PHP";echo "$var";echo "<br ...