字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

深刻认识String

1)String为字符串常量:即String对象一旦创建之后该对象是不可更改的。(源码如下)

String str1 = "abc";

String str2 = "abc";

String str3 = new String("abc");

System.out.println(str1 == str2);

System.out.println(str1 == str3);

运行结果

true

false

==比较基本数据类型的时候比较的是值,比较引用类型的时候比较的是地址值。这里是比较的引用类型。

创建“abc”的时候先到常量池看看有没有,没有的话就创建一个,有的话就直接用。所以str1和str2的存的地址值相同,指向的是同一个。

因为str3为new出来的对象,new出来的在堆中,而str1在常量池中,所以地址值不可能相等,所以是false。

2)How many Objects created with: String str=new String(“abc”)?

String str=new String("abc");

答:创建了两个对象 一个在堆 一个在常量池

执行“abc”的之后在常量池创建一个,new的时候在堆里创建一个,并把常量池中的“abc”复制了一份过去。然后将其引用赋给了s1。

3) 补充案例

String s1 = "a" + "b" + "c";// 在编译时就变成 abc 常量池中创建abc

String s2 = "abc";

System.out.println(s1 == s2);// true java中有常量优化机制

System.out.println(s1.equals(s2));// true

在编译时就变成 abc 常量池中创建abc ,两个都在常量池中

String s1 = "ab";

String s2 = "abc";

String s3 = s1 + "c";

System.out.println(s3 == s2);// false

System.out.println(s3.equals(s2));// true

因为这里s3相当于new出来的,对应地址在堆中,s2在对应地址在常量池中

Spend a little more time trying to make something of yourself and a little less time trying to impress people.

2020.02.25

知识点补充:

String 常见的十种方法

public class ZiFuChuan {

public static void main(String[] args) {

ZiFuChuanFangFa f=new ZiFuChuanFangFa();

f.IndexOf(); //1.字符串查找 注意空格在数组中的位置!字符串查找 indexOf(); 找不到就返回 -1 有就返回此元素在该数组中的角标位置

f.chartAt(); //2.获取指定位置的字符

f.substring01(); //3.获取子字符串!

f.substring02(); //在字符串中 截取一部分 有头无尾!

f.startWith(); //4.判断字符串的开头和结尾!

f.endsWith();

f.getBytes(); //5.将字符串转化为字节 数组!、getBytes();

f.toCharArray();//6.将字符串 转字符 数组!

f.length(); //7 返回字符串的长度

f.contains(); //8.判断一个字符串中是否有另一个字符串?

f.replace(); //9..字符串替换 可以实现将指定的字符串 和字符 换成新的玩意!oldChar: 要替换的字符或字符串 newChar: 用于替换原来的字符串内容!

f.equals(); //10.判断两个字符串对象 是否相等!

}

}

class ZiFuChuanFangFa{

private static final char oldChar = 0;

public void IndexOf()

{

String str="Ni Hao ";

int a=str.indexOf("p");

int a1=str.indexOf("i");

System.out.println("indexOf(‘p'):查找字符串数组中是否有 p 元素 没有就返回 "+a);

System.out.println("indexOf(‘o'):查找字符串数组中是否有 o 元素 有就返回此元素在该数组中的角标位置 "+a1);

}

public void equals() { //10.在Java中 判断两个对象是否相等 不能“==”表示 会报错 需要 调用equal()方法!--->比较的字符串的内容是否相等

String str= new String("123"); // 演示 对错!

String str01= new String("123");

boolean a=str.equals(str01);

System.out.println(str ==str01);

System.out.println(a);

}

//2.获取指定索引位置的字符 在计算机 会直接将 字符转化成字节 a--->97

public void chartAt(){

System.out.println();

String str="zhaou xu feng";

int a=str.charAt(2);

System.out.println("chartAt(2):获取字符串中角标为2的元素! "+a);

}

//3.获取子字符串 开头到所有!

public void substring01(){

System.out.println();

String str="zhou xu feng";

String a=str.substring(8);

System.out.println("sunstring(2): 获取字符串中角标为2的元素 ,并取2以后的所有元素 生成一个新的字符串(子字符串!包含的关系) "+a);

}

//3.1 获取字符串 区间性 有头无尾! int beginIndex,int endImdex

public void substring02(/*int beginIndex,int endImdex*/){

System.out.println();

String str="zhou xu feng";

String a=str.substring(1, 4); //可以在 字符串中截取一部分

System.out.println("substring(1,4: 在字符串中截取一部分 有头无尾!) "+a);

}

//4.字符串替换 可以实现将指定的字符串 和字符 换成新的玩意!oldChar: 要替换的字符或字符串 newChar: 用于替换原来的字符串内容!

public void replace(){

System.out.println();

String str="zhou xu feng"; //oldChar: 要替换的字符或字符串

String a=str.replace("feng", "hui"); //newChar: 用于替换原来的字符串内容!

System.out.println("replace(qq,cc):字符串替换 后面的替换前面的 "+a);

}

//5.判断字符串的开始和结尾

public void startWith(){

System.out.println();

String str="zhaou xu feng";

boolean a=str.startsWith(str);

System.out.println("startsWith(str):判断字符串的开始 "+a);

}

public void endsWith( ){

System.out.println();

String str="zhaou xu feng";

boolean a=str.endsWith("g");

System.out.println("endsWith( ):判断字符串的结束 "+a);

}

/*6.字母大小写转换

* str.toLowerCase();

* str.toUpperCase();

*

7.字符串分割

str.split(String sign);

*/

//8.将字符串转化为字节数组!、getBytes();

public void getBytes(){

System.out.println();

String str="zhaou xu feng";

byte[] arr=str.getBytes();

System.out.println("getBytes():将字符串转为字节数组!");

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i]+" ");

}

}

//9.将字符串 转字符数组!

public void toCharArray()

{

System.out.println();

System.out.println();

String str="zhaou xu feng";

System.out.println("getCharArray():将字符串转为字符组!");

char []arr=str.toCharArray();

for (int i = 0; i < arr.length; i++)

{

System.out.print(arr[i]);

}

}

//10 返回字符串的长度

public void length(){

System.out.println();

String str="zhaou xu feng";

int a= str.length();

System.out.println("length():返回字符串的长度!"+a);

}

//11.判断一个字符串中是否有另一个字符串?

public void contains(){

String str="zhaou xu feng";

boolean a=str.contains("xu");

System.out.println("contains(xu):判断一个字符串中是否有另一个字符串 "+a);

}

}

总结

到此这篇关于JAVA中String介绍及常见面试题小结的文章就介绍到这了,更多相关java string 面试题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java 字符串 面试_JAVA中String介绍及常见面试题小结相关推荐

  1. java中string类相等_Java中String类的常见面试题

    第一题:==与equals()的区别 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc" ...

  2. Java中String类的常见面试题

    第一题:==与equals()的区别 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc";String s2 = "abc" ...

  3. java字符串长度_Java中String字符串的最大长度?

    1.Java中的字符串String最大长度,编译期如果是javac编译就是65534.如果绕过javac编译的限制,其最大长度可以达到u2类型变达的最大值65535. Oracle JDK的编译工具J ...

  4. 面试系列第1篇:常见面试题和面试套路有哪些?

    作者 | 面哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 面试是人生中为数不多的改变自身命运的途径之一,当然有效的准备面试也是人生 ...

  5. java 字符串总结_Java中字符串(String)总结

    先说说JDK API: JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口,这些功能以类的形式封装). JDK API包含的 ...

  6. java 字符串面试_Java字符串面试问答

    java 字符串面试 String is one of the most widely used Java Class. Here I am listing some important Java S ...

  7. 2020最新Java面试题(java,JavaWeb,数据库,框架),常见面试题及答案汇总

    1.面试题模块汇总 面试题包括以下十九个模块:Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC.Spring Boot/S ...

  8. C++中构造函数和析构函数常见面试题?

    构造函数和析构函数常见面试题? 构造函数和析构函数常见面试题? 1.永远不要在构造函数或析构函数中调用虚函数 2.为什么构造函数不能定义为虚函数 3.为什么析构函数可以定义为虚函数 4.构造函数的执行 ...

  9. java 字符串 判断_Java中判断字符串是否相等的实现

    在最近的开发中,我踩到一个坑,过程是这样的.我需要在Java中判断两个字符串是否相等,按照以往的经历使用 == 双等号的操作符来判断,但是在Java中,这样写却没有实现我想要的效果.经过查阅资料后,把 ...

最新文章

  1. 初看Windows Media Center
  2. 给定一个日期,算出上周五日期
  3. linux-squirrel
  4. Three Strings CodeForces - 1301A
  5. bash shell 中时间操作常用方法总结
  6. 科立捷7代写频软件_天大厦大“两硕士论文雷同”通报,代写买卖论文
  7. 修改linevent的4096限制----更多evbuffer操作函数
  8. Java 数据结构(链表LinkedList增删改查、数组Vector、获取Vector最大值、交换Vector两成员位置、栈的实现、压栈出栈实现反转、队列Queue)
  9. STM32F103:二.(1)点亮LED
  10. shell输入输出重定向
  11. 分治算法-最大子数组问题
  12. Java中this关键词与构造函数,构造代码块的理解
  13. 拓端tecdat|R语言GARCH-DCC模型和DCC(MVT)建模估计
  14. Sourse Insight使用过程中的常使用功能简介
  15. RX8010/RX-8025T测试说明
  16. 手把手教你做线性回归分析,实用且通俗易懂!
  17. ZFS的ashift参数解读
  18. SQL创建数据库与写入数据的全过程
  19. 递归求地铁两站间最短路径
  20. 区块链安全————区块链技术安全讨论

热门文章

  1. 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?| 新榜观察...
  2. mysql建模之前需要会什么_mysql – 什么是建模我简单表的最佳方法?
  3. java中取系统时间_JAVA中获取当前系统时间(示例代码)
  4. mysql常用的备份命令有哪些_MySQL常用备份还原命令
  5. java 字符串为空_java判断字符串为空,方法详解
  6. python降维之时间类型数据的处理_Python学习数据降维方法
  7. r语言怎么把txt数据变成一个Rdata格式_甲基化芯片数据下载如何读入到R里面
  8. c 初始化char**_C/C++内存模型
  9. 威客php,phpapp威客系统下载
  10. python中的点的作用_Python基础学习中关键点的作用(三),python,重点,之,函数,3