java字符串与基础混淆

摘要:
java字符串是一个类,是java虚拟机在启动的时候会实例化9个对象池,其中9个对象池分别用来存储8种基本数据类型的包装类和String对象。String与StringBuffer的区别*对String类来说,它实现了父类的equals方法,比较的是字符串值的大小;而StringBuffer则不一样,它并没有实现equals方法,*而是将俩个引用直接比较,所以sb.equals输出false。String类标示内容不可以改变的字符串,StringBuffer类标示内容可以被修改的字符串。finally是异常处理语句结构的一部分表示总是执行。

java字符串是一个类,是java虚拟机在启动的时候会实例化9个对象池,其中9个对象池分别用来存储8种基本数据类型(int,float,double,byte,boolean,short,long,char)的包装类和String对象。

Java String创建对象有两种方式,其中一种是通过直接创建:String str1="Stringhello",另外一种是通过构造函数:String str2=new String("stringhello");前者是通过在对象池里面取对象,后者是直接生成的一个对象。String str3="111"; String str4="111"; system.out.println(str3==str4);==>>输出为:true.这是因为str3和str4都是通过对象池获取,然而通过String str5=new String("111");system.out.println(str3==str5);==>>输出为:false.这是因为str3是通过对象池获取,而str5是直接创建,故而性质不同;

== :这种比较方法引用性质要相同才是true,而equal()方法则只需要值相同即可。

String与StringBuffer的区别

* 对String类来说,它实现了父类的equals方法,比较的是字符串值的大小;而StringBuffer则不一样,它并没有实现equals方法,
* 而是将俩个引用直接比较,所以sb.equals(tb)输出false。hashcode()方法也是一个道理。
* 特别要说的是, 一个类的equals方法和hashcode方法必须一致,例如:x.equals(y)为true;那么x.hashcode()和y.hashcode()就必须相同。

String类标示内容不可以改变的字符串,StringBuffer类标示内容可以被修改的字符串。

String覆盖了equals方法和hashCode方法,二StringBuffer没有覆盖equals方法和hashCode方法;

String s="abc";
String t=new String("abc");
System.out.println(s==t); false
System.out.println(s.equals(t));true
System.out.println(s.hashCode()==t.hashCode());true

StringBuffer sb=new StringBuffer("abc");
StringBuffer tb=new StringBuffer("abc");
System.out.println(sb==tb);false
System.out.println(sb.equals(tb));false
System.out.println(sb.hashCode()==tb.hashCode());false

final、finally与finalize的区别

final用于声明属性,方法和类,分别表示属性不可变方法不可覆盖类不可继承。内部类要访问局部变量,局部变量必须定义final类型。

finally是异常处理语句结构的一部分表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候回调用被回收对象的此方法。

免责声明:文章转载自《java字符串与基础混淆》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu用sudo apt-get update出错:E: Problem executing scripts APT::Update::Post-Invoke-SuccessC# LINQ学习笔记一:走进LINQ的世界下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kafka producer interceptor拦截器(五)

  producer在发送数据时,会经过拦截器和序列化,最后到达相应的分区。在经过拦截器时,我们可以对发送的数据做进步的处理。   要正确的使用拦截器需要以下步骤:     1.实现拦截器ProducerInterceptor的方法     2.在producer的prop中配置        prop.put("interceptor.classes",...

springboot SFTP 文件上传下载功能

新增sftp.properies 文件保存 sftp服务器信息 # 协议 sftp.client.protocol=sftp # ip地址 sftp.client.host=改成自己的文件服务器地址 # 端口 sftp.client.port=22 # 用户名 sftp.client.username=root # 密码 sftp.client.passw...

二、获取微信用户openId

/// <summary> /// 登录首页 /// </summary> /// <returns></returns> public ActionResult Index() { if (Session["isTrue"] == null) { string weixinA...

使用JAVA调用KRPANO加密XML

KRPano自带的命令行工具krpanotools可以加密XML,具体的参数说明如下语法:   krpanotools32.exe encrypt [OPTIONS] inputfiles inputfiles 参数可以是任意个数的文件 (支持*) 选项:-h5 … 使用HTML5兼容的加密方式-bin … 使用仅支持Flash的加密方式-p ...

将list分成等数量

import java.util.ArrayList; import java.util.List; public class CollectionGroupUtil { public static List groupListByQuantity(List list, int quantity) { if (list...

c++ string 的函数replace()用法

basic_string::replace 将原string 中的元素或子串替换。返回替换后的string。 (1)用string 或C-string 代替操作string 中从 _Pos1 开始的 _Num1 个字符 basic _ string& replace( size _ type _Pos1 ,size _ type _Num1 ,...