java从小白开始的练习(String构造器,内存分析与笔试题)
Posted 韶光不负
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java从小白开始的练习(String构造器,内存分析与笔试题)相关的知识,希望对你有一定的参考价值。
欢迎大家观看这篇文章,小编在此篇文章是补充小编此标题下String“字符串”内容的补充,同样也是对前面内容的回忆,想学习Java的小伙伴可以观看博主Java的标题的文章,好了废话不多说,下面进入学习时间!
目录
String是引用类型,为什么不用new关键字进行创建就可以使用?
String的方法理解与源码讲解(jdk8.0,方法为常用方法)
final关键字修饰是不可变的,所以字符串像数组一样,内容,大小是国定不变的,只能创建新的字符串。
方法二:isEmpty() (查看字符串长度是否为0,返回true或者false)
方法三:charAt(下标) (返回一个该下标的值,以char类型返回)
方法四:indexof(下标) (返回指定字符ch在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。)
方法五(非常重要):equals(比较对象) (判断字符串与比较对象是否相等,相等返回true,反之,返回false)
方法六 substring(开始下标,结束下标) (返回一个字符串,字符串截取开始下标开始到结束下标结束)
判断下面代码运行结果?(参考String的内存空间进行解答!!!)
String的详解
String就是字符串
String是引用类型,为什么不用new关键字进行创建就可以使用?
因为字符串的使用太过于平凡了,使用就简化了String的使用。这样就减少了代码的冗余。(冗余:小编理解就是重复的次数)
String的方法理解与源码讲解(jdk8.0,方法为常用方法)
在jdk8.0当中字符串就是个char类型数组的,但在9.0时候改成了byte类型的数组
final关键字修饰是不可变的,所以字符串像数组一样,内容,大小是国定不变的,只能创建新的字符串。
构造器
无参构造:一个空字符串对象
有参构造:(有参构造太多了,小编举一个例子来看)就是将其它基本类型的数组转化为字符串
参数介绍:
byte [] :一个byte类型的数组
hibye :字节
offset:偏移量(当偏移量是2,就是从第二个数组开始)
count:数量
方法:“+” (拼接字符串最常见方法)
String s = "I " +" love " +"you";
方法一:length() ( 返回字符串的长度)
方法二:isEmpty() (查看字符串长度是否为0,返回true或者false)
方法三:charAt(下标) (返回一个该下标的值,以char类型返回)
方法四:indexof(下标) (返回指定字符ch在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。)
方法五(非常重要):equals(比较对象) (判断字符串与比较对象是否相等,相等返回true,反之,返回false)
equals()方法进行比较,通过源码可以看出先比较内存地址是否相等(==判断的是内存地址),在比较值是否一样。因为String的存储不同,所以不要使用==来判断字符串是否相等!!!
方法六 substring(开始下标,结束下标) (返回一个字符串,字符串截取开始下标开始到结束下标结束)
方法七 toString() (返回改字符串,不需要下标)
方法八 join(字符串1,字符串2)(拼接二个字符串)
方法9:split(regex -- 正则表达式分隔符。limit -- 分割的份数) (匹配给定的正则表达式来拆分字符串。)
String内存分析
String str = "123";
使用上面方式创建一个字符串时,其实是在常量池(元空间)中创建一个字符串,将变量指向字符串的内存地址。(如下图)
String str = new String("123");
使用上面方式创建一个字符串时,是在堆中创建一个空间,空间指向常量池内存地址,变量指向了堆中的地址。(如下图)
String笔试题(讲解一下下面代码)
判断下面代码运行结果?(参考String的内存空间进行解答!!!)
package com.lsf_leetcode.test;
public class Solution
public static void main(String[] args)
String str1 = "123";
String str2 = "123";
System.out.println(str1 == str2); //true
System.out.println(str1.equals(str2)); //true
String str3 = new String("123");
String str4 = new String("123");
System.out.println(str3 == str4); //false
System.out.println(str1.equals(str4)); //ture
String s3 = "123";
System.out.println(str3 == s3); //false
问下面代码创建了几个对象?
package com.lsf_leetcode.test;
public class Solution
public static void main(String[] args)
String str1 = "123";
String str2 = "123";
String s3 = str1 + str2;
产生三个对象,字符串是不可变的,str1与str的拼接会产生一个新的字符串
以上是关于java从小白开始的练习(String构造器,内存分析与笔试题)的主要内容,如果未能解决你的问题,请参考以下文章