首页 > 编程语言 >Java中的字符串是常量

Java中的字符串是常量

时间:2023-03-21 17:11:56浏览次数:50  
标签:Java 常量 s1 s6 helloworld s4 字符串 hello String

Java中的字符串是常量

public class Stringtest {
 
	public static void main(String[] args) {
		String s1 = "hello"; 
		String s2 = "world";
		String s3 = "hello";
		String s4 = "hello"+"world";
		String s5 = "helloworld";
		String s6 = s1 + s2;
 
		//==号比较的是两个引用指向的地址是否相同,
		//s1 == s3为true表明s1和s3这两个引用指向同一个地址,
		//即String s1 = "hello"; 这条语句创建了"hello"常量,
		//在String s3 = "hello"; 这条语句只是将s3指向了s1创建的"hello",而不是再创建一个"hello"。
		System.out.println(s1 == s3); //运行结果:true
 
		//同理,String s4 = "hello"+"world";这条语句拼接了一个"helloworld"常量,
		//String s5 = "helloworld";这条语句直接把s5指向以上的"helloworld"常量,而不是再创建一个。
		System.out.println(s4 == s5); //运行结果:true
 
		//s6由s1和s2两个变量拼接而成,虽然结果也是"helloworld",但由于是由变量拼接而成,所以不会指向s4创建的"helloworld".而是创建一个新的"helloworld"并让s6指向它。
		System.out.println(s5 == s6);//运行结果:false
	}
}

s4和s6的不同:

编译器在编译的时候只能确定常量的值,所以String s4 = "hello"+"world";这条语句在编译的时候,由于编译起知道"hello"和”world“这两个常量的值,编译时就已经直接替代为了:String s4 = "helloworld";

而String s6 = s1 + s2;这条语句,因为s1、s2是变量,编译器无法确定变量的值(因为变量的值会变,编译起无法保证在运行过程中s1,s2的值恒定),这条语句在编译完成后并不做修改。所以会在运行的时候重新创建一个"helloworld"(与上面s4指向的"hellloworld”并不是同一个),并将s6指向它。
————————————————
版权声明:本文为CSDN博主「FakeMonk_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39108629/article/details/100178650

标签:Java,常量,s1,s6,helloworld,s4,字符串,hello,String
From: https://www.cnblogs.com/MePear/p/17240643.html

相关文章

  • Java ThreadPoolTaskExecutor 线程池的常见问题
    JavaThreadPoolTaskExecutor线程池的常见问题 https://blog.csdn.net/weixin_43611528/article/details/123083314 重要参数corePoolSize:核心线程数,常开的线程数,默......
  • algrothm_java命名
    ......
  • corejava_基础
    首先来个问题:什么是对象?     宽泛:可以用形容词修饰的名词都称作对象     程序:具有什么(属性)和能做什么(功能)的特点称作对象对于知识点的理解:   ......
  • 4-springboot多数据源配置报错Cause: java.lang.IllegalArgumentException: jdbcUrl i
    springboot2.0版本以上的多数据源配置改成:spring.datasource.refunddb.url=jdbc:mysql://refund地址spring.datasource.refunddb.username=uatspring.datasource.refundd......
  • 一段四合一图片整和Java代码
    实现内容能够实现将四张图片拼接,整合成一张完整图片 使用了getRGB、setRGB方法进行图片的提取拼接实现代码image1=ImageIO.read(imageFile1);image2=ImageIO.r......
  • java.io.FileNotFoundException: cacerts (拒绝访问)
    文件找不到?不可能的,上面能读取到证书内容怎么可能是文件找不到。真正的原因是因为权限不足,所以拒绝访问。为什么会权限不足?因为我的JDK是以默认路径安装到C盘中的,对其进行操......
  • c语言学习-字符串和结构体
    字符串是数组,结尾多一个"\0",是字符串的结束标志charch[]="helo";char*pchar="helo";sizeof和strlen区别charcdaat[128]="hello";sizeof(cdaat);//128str......
  • JSON parse error: Cannot deserialize value of type `java.util.Date` from String
    日志Resolved[org.springframework.http.converter.HttpMessageNotReadableException:JSONparseerror:Cannotdeserializevalueoftype`java.util.Date`fromStr......
  • Java 锁
    Java中的锁是一种同步机制,用于控制对共享资源的访问。锁提供了对共享资源的独占访问,以确保在给定时间内只有一个线程可以访问该资源。Java中有两种类型的锁:内置锁和显式锁......
  • 使用 ChatGPT 模型实现 JavaScript 加密解密技术
    以下是一个使用ChatGPT模型实现混淆加密解密的案例代码。该代码使用JavaScript编写,并且使用了TensorFlow.js库来加载和执行ChatGPT模型。代码的目的是将输入的文本......