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)) ;    // falseSystem.out.println("str1 == str3 --> " + (str1==str3)) ;    // falseSystem.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))) ;    // trueSystem.out.println("str1 equals str3 --> " + (str1.equals(str3))) ;    // trueSystem.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)) ;    // trueSystem.out.println("str1 == str3 --> " + (str1==str3)) ;    // trueSystem.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次才能完成。这种操作性能很低,应避免使用。

转载于:https://www.cnblogs.com/alsf/p/5513750.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebApi Post 后台无法获取参数的解决方案

事件回放&#xff1a; 之前一段时间&#xff0c;公司里前端用的Angularjs 发送http请求也是用的ng的组件&#xff0c;后台是.Net的WebApi 前端 var data {PArgs: {PageIndex: 0,PageSize: 8,RowsCount: 0} };$http.post("/Api/Test/ABC", data).success(function (d…

南京大学计算机系周小莉,周会群

媒体报道&#xff1a;南京大学周会群&#xff1a;用计算机聪明地做实验Q《中国教育网络》A周会群Q&#xff1a;南京大学的高性能计算中心非常特殊&#xff0c;分布在物理&#xff0c;化学、天文、地球科学四个不同的学科中&#xff0c;为什么采取这种模式&#xff1f;A&#xf…

不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...

GAN 这个领域发展太快&#xff0c;日新月异&#xff0c;各种 GAN 层出不穷&#xff0c;前几天看到一篇关于 Wasserstein GAN 的文章&#xff0c;讲的很好&#xff0c;在此把它分享出来一起学习&#xff1a;https://zhuanlan.zhihu.com/p/25071913。相比 Wasserstein GAN &#…

用于MyBatis CRUD操作的Spring MVC 3控制器

到目前为止&#xff0c;我们已经为域类“ User ”创建了CRUD数据库服务&#xff0c;并且还将MyBatis配置与Spring Configuration文件集成在一起。 接下来&#xff0c;我们将使用Spring MVC创建一个网页&#xff0c;以使用MyBatis CRUD服务对数据库执行操作。 使用MyBatis 3创建…

2pin接口耳机_拆解报告:雷柏首款真无线耳机XS200

-----我爱音频网拆解报告第185篇-----雷柏是一家历史悠久的鼠标和键盘厂商&#xff0c;截至目前&#xff0c;雷柏(rapoo)总共出了四款耳机&#xff0c;此前曾推出过三款蓝牙耳机&#xff0c; 分别是S500 蓝牙立体声麦克风耳机&#xff0c;S200 蓝牙立体声麦克风耳机&#xff0c…

深入理解javascript原型和闭包(3)——prototype原型

转载&#xff0c;原文地址http://www.cnblogs.com/wangfupeng1988/p/3978131.html 既typeof之后的另一位老朋友&#xff01; prototype也是我们的老朋友&#xff0c;即使不了解的人&#xff0c;也应该都听过它的大名。如果它还是您的新朋友&#xff0c;我估计您也是javascript的…

python 温度 符号_Python通过小实例入门学习---1.0(温度转换)

1.安装Python 3 下载地址: Welcome to Python.org​www.python.org 2.“温度转换”实例:摄氏度--->华氏度 / 华氏度--->摄氏度 TempConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ["f","F"]:C = (eval(Tem…

mysql 修改root密码

1.找到配置文件my.ini &#xff0c;然后将其打开&#xff0c;可以选择用记事本打开 C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.打开后&#xff0c;搜索mysqld关键字&#xff0c;找到后&#xff0c;在mysqld下面添加skip-grant-tables&#xff0c;保存退出。 PS&#x…

联想计算机CDROM启动,联想电脑光驱启动问题?

1、开机按del键或f2进入bios设置(不同主板按键不一样&#xff0c;一般是DEL&#xff0c;也可能是F2&#xff0c;可以参考下主板说明)&#xff0c;将计算机的启动模式调成从光盘启动。也就是从cdrom启动&#xff0c;根据主板的不同&#xff0c;bios设置有所差异(一般是&#xff…

string 大小写转换

STL的algorithm库确实给我们提供了这样的便利&#xff0c;使用模板函数transform可以轻松解决这个问题&#xff0c;开发人员只需要提供一个函数对象&#xff0c;例如将char转成大写的toupper函数或者小写的函数tolower函数。 transform原型&#xff1a; 1 #include <string&…

linux服务器上svn的log_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器 | Linux 中国...

在 Centos 8 和 RHEL 8 系统中&#xff0c;默认未安装 VNC 服务器&#xff0c;它需要手动安装。在本文中&#xff0c;我们将通过简单的分步指南&#xff0c;介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器。-- Pradeep KumarVNC(虚拟网络计算Virtual Network Computing)服务器…

Windows上的Java线程CPU分析

本文将为您提供一个教程&#xff0c;介绍如何在Windows OS上快速查明Java线程贡献者与CPU严重问题有关。 Windows与Linux&#xff0c;Solaris和AIX等其他操作系统一样&#xff0c;使您可以在进程级别监视CPU利用率&#xff0c;还可以监视在进程中执行任务的单个线程。 在本教程…

flask 继承模版的基本使用1

转载于:https://www.cnblogs.com/wanghaonull/p/6399492.html

计算机日期函数公式大全,Excel技巧: 根据日期汇总月份的计算公式

在许多情况下&#xff0c;Excel记录的数据将按照发生的日期进行记录&#xff0c;但是根据日期记录的数据将非常分散&#xff0c;通常需要每月汇总相应的数据. 在这种情况下&#xff0c;您需要将日期转换为月份. 本文介绍了如何使用SUMPRODUCT函数按月汇总数据.公式提示在SUMPRO…

coverity代码检测工具介绍_微服务测试之静态代码扫描

静态代码扫描为整个发展组织增加价值。无论您在开发组织中发挥的作用如何&#xff0c;静态代码扫描解决方案都具有附加价值&#xff0c;拥有软件开发中所需要的尖端功能&#xff0c;最大限度地提高质量并管理软件产品中的风险。背景微服务架构模式具有服务间独立&#xff0c;可…

ADF:在任务流终结器中支持bean作用域

介绍 当我们需要在任务流消失之前完成一些最终工作&#xff08;干净的资源&#xff0c;紧密的连接等&#xff09;时&#xff0c;这是使用任务流终结器的非常普遍的推荐做法。 和往常一样&#xff0c;我们使用在任务流中声明的托管bean。 托管Bean可以具有不同的范围-请求&#…

linux中匿名用户怎么登陆_南京课工场IT培训:Linux中vsftpd服务配置(匿名,用户,虚拟用户)...

vsftpd概述vsftpd 是“very secure FTP daemon”的缩写&#xff0c;安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字&#xff0c;它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面&#xff0c;是一个完全免费的、开放源代码的ftp服务…

Java High CPU故障排除指南–第1部分

本文是该系列的第1部分&#xff0c;它将为您提供有关如何进行故障排除和识别Java高CPU问题根本原因的综合指南。 该指南也适用于独立的Java程序&#xff0c;但旨在帮助涉及Java EE企业日常生产支持的个人。 它还将包括最常见的高级CPU问题列表以及高级解决方案。 生产问题解决…

php进程间通信 yoc_swoole的process模块创建和使用子进程

swoole中为我们提供了一个进程管理模块 Process&#xff0c;替换PHP的 pcntl 扩展&#xff0c;方便我们创建进程&#xff0c;管理进程&#xff0c;和进程间的通信。swoole提供了2种进程间的通信&#xff1a;1、基于 unix socket 的管道 pipe。2、基于 sysvmsg 的消息队列。我们…

mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?

阿里妹导读&#xff1a;如何治理测试稳定性问题&#xff1f;很多人会说&#xff1a;环境、流程管控、监控、工具化、加机器、专人负责、等等。这些都是对的。不过这些都是解决方案层面的&#xff0c;而不是方法论和理论体系层面的。今天&#xff0c;阿里研究员郑子颖来说说测试…