博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易云课堂Java模拟面试笔记(1-10)
阅读量:7029 次
发布时间:2019-06-28

本文共 2842 字,大约阅读时间需要 9 分钟。

1.用==比较String

String a = "abc";String b = "abc";String c = new String("abc");String d = new String("abc");Syso(a == b);Syso(c == d);Syso(a == c)//true false false //a和b创建为引用,指向同一地址复制代码

** ==比较引用类型时,比较的是虚地址。String类型比较特殊,当使用=赋值时,相同内容的字符串本质是同一个对象,虚地址相同。而使用new赋值时,每次都会创建一个新的对象。**

2.String类用=赋值

public static void change(String str){    str = "abc";    Syso("change_str="+str);}public static void main(String[] args){    String str = "123";    change(str);    Syso("main_str="str);}//change_str=abc//main_str=123复制代码

** String是引用类型,是比较特殊的类,是只读对象。对String有任何改变,都将返回一个新的对象。**

3.用equals比较String

public static void main(String[] args){    String str1="abc";    String str2="abc";        String str3=new String("abc");    String str4=new String("abc");        Syso(str1.equals(str2));    Syso(str3.equals(str4));    Syso(str1.equals(str3));}//equals 在 object类中定义 //equals 比较的是两个对象的虚地址,只有当虚地址一样时才会返回true//但是在部分类中会重写equals,如String//在String中,equals比较的是两个String的值//true true true复制代码

** equals()方法是在Object类中定义的,Java API中的类都默认有该方法,默认情况下是比较两个对象的虚地址。但是很多类对其进行了覆盖。String类就将equals方法进行了覆盖,修改为比较两个字符串的字符序列,只要字符序列相同的字符串,返回值就为true。**

4.如何判断一个String是不是一个空字符串

if(str != null && str.equals(""))//要判断字符串是否为空,否则当字符串没有初始化时,会出现空指针错误复制代码

** null指的是空指针,而空字符串指的是str已经被初始化,不过值为空,即""。在判断的时候,一定判断其不是空指针,再调用equals判断其字符序列是否为空,否则会发生空指针异常。**

5.字符串的不可变性质

String bar="abc";bar.toUpperCase();Syso(bar);//abc//bar = bar.toUpperCase();  则输出ABC//字符串调用任何方法是不能改变字符串的值复制代码

** 字符串类具有不可变的性质,也就是一旦一个字符串被初始化到内存中,其值就不会被改变。对它调用任何方法都将返回一个新的对象。**

6.字符串与基本数据类型的转换

题目:有字符串变量str="123",如何转换成int类型123?    String str="123";    int i = Integer.parseInt(str);复制代码

** 在实际应用开发过程中,经常需要把字符串转换成整型或浮点型的数值进行运算。Integer/Double等包装器类都定义了parseXXX方法,可以进行转换。**

7.使用new关键字创建字符串对象

题目:String str = new String("abc");创建了几个对象?复制代码

** 创建了两个或一个对象。 由于字符串是一个非常常用的类型,所以JVM中存在一个字符串常量池,保存了大量的字符串对象,并共享使用。使用new String("abc");创建对象时,如果常量池中没有abc,首先会在对象池中创建字符串abc,然后在堆中创建字符串对象,赋值给str。如果常量池中已经有abc,则创建一个对象。**

8.用==比较字符串常量

题目:下面语句输出结果是什么?Syso("china"+"soft"=="chinasoft");//trueString str1 = new String("abc");String str2 = new String("abc");Syso(str1==str2);//false复制代码

** ==比较的是引用的虚地址。对于字符串常量来说,存在于字符串共享池里,只要字符串序列相同的字符串,在共享池莉都被“合并”,引用同一个对象,所以虚地址也相同。**

9.把基本数据类型转换成String

题目:有变量int i = 123;如何把i转换成String对象?int i = 123;String str = String.valueOf(i);Syso(str);复制代码

** String类中重载了一系列的valueOf方法,方法参数为boolean、int、float、double等基本数据类型,方法为静态方法,返回值为字符串,可以把参数转换成String对象。**

10.如何比较String的字典顺序

题目:有字符串 str1="international",str2="chinasoft"      如何使用代码比较他们的字典顺序?String temp = "";String str1 = "international";String str2 = "chinasoft";if(str1.compareTo(str2)>0){    temp  = str2;    str2 = str1;    str1 = temp;}Syso(str1+" "+str2);复制代码

** compareTo方法是接口中Comparable定义的,API中很对类都对其进行了实现。String类实现了该接口,重写了compareTo方法。该方法用来比较字符串的字典顺序,返回值为正数,表示str1大于str2,即字典中str1排在str2后。返回值为负数,表示str1小于str2.返回值为0,表示相同。**

转载于:https://juejin.im/post/5b5922cfe51d453488137fe7

你可能感兴趣的文章
在项目中引入领域驱动设计的经验
查看>>
用关系型NoSQL回到未来
查看>>
Jeff Bean谈Flink与流式处理的5大新发现
查看>>
技术寡头争霸传之:控制开源工具,就控制了整个生态
查看>>
微软把UWP定位成业务线应用程序开发平台
查看>>
2018腾讯云+未来峰会互联网专场:腾讯云智能物联解决方案亮相
查看>>
Python数据可视化的10种技能
查看>>
关于有效的性能调优的一些建议
查看>>
微软发起Java on Azure调查,呼吁Java社区积极参与
查看>>
搭建svn仓库
查看>>
JavaScript arguments 对象详解
查看>>
[elixir! #0002] [译] 在Phoenix中实现动态表单 by José Valim
查看>>
【windows docker & centos 6 .7搭建】
查看>>
Firefox插件开发:夜间模式
查看>>
这是我第一次遇到判断ios系统版本的问题
查看>>
漏洞战争: 软件漏洞发展趋势
查看>>
数人云CTO解读Docker 1.12和金融业容器化
查看>>
PyMongo 连接问题
查看>>
切图崽的自我修养-合理组织CSS结构
查看>>
【编码】Font Size-微软实习笔试编程题(一)-2016.04.06
查看>>