IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java从小白开始的练习(String构造器,内存分析与笔试题) -> 正文阅读

[数据结构与算法]java从小白开始的练习(String构造器,内存分析与笔试题)

欢迎大家观看这篇文章,小编在此篇文章是补充小编此标题下String“字符串”内容的补充,同样也是对前面内容的回忆,想学习Java的小伙伴可以观看博主Java的标题的文章,好了废话不多说,下面进入学习时间!

目录

String的详解

String是引用类型,为什么不用new关键字进行创建就可以使用?

String的方法理解与源码讲解(jdk8.0,方法为常用方法)

final关键字修饰是不可变的,所以字符串像数组一样,内容,大小是国定不变的,只能创建新的字符串。

构造器?

方法:“+” (拼接字符串最常见方法)

方法一:length() (?返回字符串的长度)

方法二:isEmpty() (查看字符串长度是否为0,返回true或者false)

?方法三:charAt(下标) (返回一个该下标的值,以char类型返回)

?方法四:indexof(下标) (返回指定字符ch在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。)

方法五(非常重要):equals(比较对象) (判断字符串与比较对象是否相等,相等返回true,反之,返回false)

方法六?substring(开始下标,结束下标) (返回一个字符串,字符串截取开始下标开始到结束下标结束)

方法七 toString() (返回改字符串,不需要下标)

?方法八 join(字符串1,字符串2)(拼接二个字符串)

String内存分析

String笔试题(讲解一下下面代码)

判断下面代码运行结果?(参考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的拼接会产生一个新的字符串

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:33:00  更:2021-12-15 18:33:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:22:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码