首页 分享 新人的第二篇博客(Java当中==为什么无法比较String字符串)

新人的第二篇博客(Java当中==为什么无法比较String字符串)

来源:花匠小妙招 时间:2025-04-26 20:05

写这篇博客的原因是我昨天提出的问答得到了一些大佬的回答,然后经过一些代码来测试并且弄明白弄清楚这个问题
首先要感谢回答我问题的这位老哥GideonYeung

在Java当中具有两种大的数据类型,一种是引用类型,一种是基本类型。

1.对基本类型而言,使用==进行比较,是直接比较两个数据类型之间的数值
2.对于引用类型而言,使用==进行比较,是比较的两个数据类型之间的地址

一般情况下String字符串和数组都不是基本数据类型,它们被当作类来处理,也就是我们所说的引用数据类型,因此我们比较字符串的时候,需要使用str.equals(str2)而不是直接使用==进行比较。
以下是原文的地址:
Java当中为什么不能够直接用==比较String字符串
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package test1; public class Test1 {String str="gre"; String str2="gre"; char[] chars={'g','r','e'}; String arraychar=new String(chars); System.out.println(str==str2);//true System.out.println(str==arraychar);//false System.out.println(str2==arraychar);//false } 123456789101112

以上是我通过一个大佬的回答然后追溯源头找到的一段代码,我先是将这段代码放入Eclipse里面,然后发现了不少的红色警告。

花了半个来小时的翻找资料和其他大佬们的博客,我找到了一篇比较符合我当前问题的博客
java 中 Cannot make a static reference to the non-static 解决方法

java中 静态方法不可以直接调用非静态方法和成员,也不能使用this关键字(这就是这个问题的原因,我用静态的main方法调用了非静态的的get方法)。

原因解释:类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中”寄居”,不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。所以在静态方法中调用非静态方法时,编译器会报错
java中不能将方法体内的局部变量声明为static main()函数是静态的,没有返回值,形参为数组。 非静态成员的可以随便调用静态成员

package test1; public class Test1 { static String str="gre"; static String str2="gre"; static char[] chars={'g','r','e'}; static String arraychar=new String(chars); public static void main(String[] args) { System.out.println(str==str2);//true System.out.println(str==arraychar);//false System.out.println(str2==arraychar);//false System.out.println(arraychar); } }

12345678910111213141516

在看过这篇博客之后,我将这段代码块修改了一下,使得str,str2,char[]和arraychar等非静态成员转换成了静态成员,这段代码才得以运行,不过感觉这样做似乎有些不妥

在一段时间之后,我得到了追问的回复
在这里插入图片描述
在这里插入图片描述
感谢大家对我的关照,我竟然把输出语句放在了main语句外面,然后跳出来的一些错误就乱七八糟的。感谢CSDN的各位。

相关知识

新人的第二篇博客(Java当中==为什么无法比较String字符串)
Java:String类型比较,equals和==比较的区别
String:字符串常量池详解
Java 字符串格式化详解
String的存储方式
替换=(等于号)正则表达式
字符串String的+和+=及循环操作String的原理
Python变量和数据类型Number、String、转义字符、字符串格式化
Java面向对象系列[v1.0.0][包装类]
mysql查询字符串不包含

网址: 新人的第二篇博客(Java当中==为什么无法比较String字符串) https://www.huajiangbk.com/newsview1793753.html

所属分类:花卉
上一篇: 实验十五 切花收与包装实验
下一篇: 【原创】【牧场物语 连接新天地】

推荐分享