软件设计之Java入门视频(15)

软件设计之Java入门视频(15)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及 450-479
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 常用类-String
  2. StringBuffer与StringBuilder
  3. Date

1、 常用类-String

String:字符串,使用一对""引起来表示
1)String声明为final的,不可被继承
2)String实现了Serializable接口:表示字符串是支持序列化的
3)String实现了Comparable接口:表示String可以比较大小
4)String内部定义Tfinal char[] value用于存储字符串数据
5)String代表不可变的序列。简称:不可变性(当对字符串重新赋值时,需要重新指定内存区域)
6)通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
7)字符串常量池中是不会存储相同内容的字符串的。

在这里插入图片描述

String 不同实例化方式对比

在这里插入图片描述

package exer;
import org.junit.Test;
import javax.sound.midi.Soundbank;
public class StringTest {@Testpublic void test1(){String s1 = "abc";//字面量的定义方式,数据声明在方法区中的字符串常量池String s2 = "abc";//通过new+构造器的方式:此时s1和s2保存的地址值,时数据在堆空间中开辟空间以后对应的地址值String s3 = new String("abc");String s4 = new String("abc");System.out.println(s1==s2); //trueSystem.out.println(s1==s3);//falseSystem.out.println(s1==s4);//falseSystem.out.println(s3==s4);//falseSystem.out.println("***********************");Person p = new Person("Tom",12);Person p1 = new Person("Tom",12);System.out.println(p.name.equals(p1.name));//trueSystem.out.println(p.name==p1.name);//true}}
class Person {int age;String name;public Person(String name,int age) {this.age = age;this.name = name;}
}

辨析String对象

1)常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量
2)只要其中有一个是变量,结果就在堆中
3)如果拼接的结果调用intern()方法,返回值就在常量池中

package exer;
import org.junit.Test;
public class StringTest {@Testpublic void test1() {String s1 = "javaEE";//字面量的定义方式,数据声明在方法区中的字符串常量池String s2 = "hadoop";String s3 = "javaEEhadoop";String s4 = "javaEE"+"hadoop";String s5 = s1 + "hadoop";String s6 = "javaEE"+s2;String s7 = s1+s2;System.out.println(s3 ==s4);//true//false原因:有s1/s2变量参与创建String对象,都是统一在堆空间创建,堆空间中判断的是地址,而不是对象内容System.out.println(s3 ==s5);//falseSystem.out.println(s3 ==s6);//falseSystem.out.println(s3 ==s7);//falseSystem.out.println(s5 ==s6);//falseSystem.out.println(s5 ==s7);//falseSystem.out.println(s6 ==s7);//false}
}

String字符/字节数组转换

1)编码:字符串 -->字节
2)解码:字节 -->字符串

package exer;
import org.junit.Test;import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class StringTest {@Testpublic void test1() {String s1 = "javaEE";//String转char[]char[] charArray = s1.toCharArray();for (int i = 0; i < charArray.length; i++) {System.out.println(charArray[i]);}//char[]转Stringchar[] arr = new char[]{'e','r','o'};String s2 = new String(arr);System.out.println(s2);}@Testpublic void test2() throws UnsupportedEncodingException {String str1 = "abc123中国";//String转byte[]byte[] bytes = str1.getBytes();//使用默认字符集进行编码System.out.println(Arrays.toString(bytes));byte[] bytes1 = str1.getBytes("gbk");//使用gbk编码System.out.println(Arrays.toString(bytes1));String str2 = new String(bytes);//使用默认字符集进行解码System.out.println(str2);String str3 = new String(bytes1,"gbk");System.out.println(str3);}
}

2、StringBuffer与StringBuilder

三者异同:
1)String:不可变的字符序列;底层用char[]存储
2)StringBuffer:可变的字符序列:线程安全的,效率低:底层用char[]存储
3)StringBuilder:可变的字符序列:jdk5.0新增的,线程不安全的,效率高:底层用char[]存储

package exer;
import org.junit.Test;import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class StringTest {@Testpublic void test1() {StringBuffer sb1 = new StringBuffer("abc");sb1.setCharAt(0,'m');System.out.println(sb1);//mbc/*源码分析:StringBuffer sb1 = new StringBuffer(); //char[] value = new char[16];底层创建了一个长度16的数组sb1.append(‘a'); //value[0] = 'a';sb1.append('b');//value[1] = 'b';StringBuffer sb2 = new StringBuffer("abc"); char[] value = new char["abc.length()" + 16];//问题1 sb2.length是多少:  3,有实际值的数量//问题2 扩容问题:如果要添加的数据底层数组装不下了,那就需要扩充底层的数组默认情况下,扩容为原来容量的两倍+2*/}@Testpublic void test2(){long startTime = 0L;long endTime = 0L;String text = "";StringBuffer buffer = new StringBuffer("");StringBuilder builder = new StringBuilder("");
//开始对比startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {buffer.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuffer的执行时间:" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {builder.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuilder的执行时间:" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {text = text + i;}endTime = System.currentTimeMillis();System.out.println("String的执行时间:" + (endTime - startTime));/*StringBuffer的执行时间:3StringBuilder的执行时间:1String的执行时间:787*/}
}

3、Date

1)java.util.Date类
2)java.util.Date子类 java.sql.Date

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux桌面溯源

X窗口系统(X Window System) Linux起源于X窗口系统&#xff08;X Window System&#xff09;&#xff0c;亦即常说的X11&#xff0c;因其版本止于11之故。 X窗口系统&#xff08;X Window System&#xff0c;也常称为X11或X&#xff09;是一种以位图方式显示的软件窗口系统。…

zabbix 7.0 SNMP Hex数据预处理新功能

一、简介 zabbix7.0新特性是监控项新增支持SNMP Hex数据预处理。其中内置了对snmp请求结果Hex转换处理&#xff0c;不再需要使用繁琐的方式&#xff0c;如javascript脚本、替换、修整等方式处理将监控项取值做可视化处理&#xff0c;大福提升SNMP采集获取到Hex数据的处理效率。…

浅析 VO、DTO、DO、PO 的概念

文章目录 I 浅析 VO、DTO、DO、PO1.1 概念1.2 模型1.3 VO与DTO的区别I 浅析 VO、DTO、DO、PO 1.1 概念 VO(View Object) 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设…

【C++】优先级队列(底层代码解释)

一. 定义 优先级队列是一个容器适配器&#xff0c;他可以根据不同的需求采用不同的容器来实现这个数据结构&#xff0c;优先级队列采用了堆的数据结构&#xff0c;默认使用vector作为容器&#xff0c;且采用大堆的结构进行存储数据。 &#xff08;1&#xff09;在第一个构造函数…

Qt之元对象系统

Qt的元对象系统提供了信号和槽机制&#xff08;用于对象间的通信&#xff09;、运行时类型信息和动态属性系统。 元对象系统基于三个要素&#xff1a; 1、QObject类为那些可以利用元对象系统的对象提供了一个基类。 2、在类声明中使用Q_OBJECT宏用于启用元对象特性&#xff0c…

项目收获总结--本地缓存方案选型及使用缓存的坑

本地缓存方案选型及使用缓存的坑 一、摘要二、本地缓存三、本地缓存实现方案3.1 自己编程实现一个缓存3.2 基于 Guava Cache 实现本地缓存3.3 基于 Caffeine 实现本地缓存3.4 基于 Encache 实现本地缓存3.5 小结 四、使用缓存的坑4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩4.4 数据…

如何管理好【管理层】?

如何管理好管理层? 现在流行“找客户痛点,不如找领导G点” 管理好管理层比管理好员工更重要,不要让管理层成为传话筒。你是抱着很大期望提供优厚的待遇聘用管理层,对于所有人来说,你需要一个这样的职位,对于他需要一分工作而已。出色的管理层就像出色的员工一样非常难寻…

leetcode日记(38)字母异位词分组

最开始的想法是创建vector<vector<string>> result&#xff0c;然后遍历strs中字符串&#xff0c;遍历result中vector&#xff0c;比较vector中第一个string和strs中string&#xff0c;若为字母异位词&#xff0c;则加入vector&#xff0c;若无&#xff0c;则创建新…

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript 三、主流框架vue3框架 四、 工具&#xff08;特定框架&#xff09;1、uinapp 五、组件库&#xff08;&#xff09;1、uView如何在哪项目中导入uView 六、应用&#xff08;各种应…

Vulnhub靶场 | DC系列 - DC2

目录 环境搭建渗透测试 环境搭建 靶机镜像下载地址&#xff1a;https://vulnhub.com/entry/dc-2,311/需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网段存活主机 …

2024年辽宁省数学建模竞赛C题超详细解题思路+问题一案代码分享

本文将为大家带来2024年C题超详细解题思路&#xff0c;本次竞赛6000人参加&#xff0c;共计2400队伍。C题作为本次竞赛中最简单的一道题目&#xff0c;意味着选题人数也将是最多的。因此&#xff0c;本文将对C题的解题思路以及将要面对的问题&#xff0c;进行详细的说明。希望我…

基于深度学习的组织病理学图像IDC检测方法

乳腺癌可以通过对浸润性导管性乳腺癌(IDC)和浸润性小叶性乳腺癌(ILC)的内部组织区域进行检查来确诊。因此&#xff0c;早期诊断乳腺组织异常是至关重要的&#xff0c;以减少风险&#xff0c;使快速和有效的治疗。本研究旨在利用所提出的基于深度学习的算法&#xff0c;利用组织…

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models 0. 引言1. 快速开始2. 运行 Demo 0. 引言 EVE (Encoder-free Vision-language model) 是一种创新的多模态 AI 模型&#xff0c;主要特点是去除了传统视觉语言模型中的视觉编码器。 核心创新 架构创新&#xff…

C++的deque(双端队列),priority_queue(优先级队列)

deque deque是一个容器,是双端队列,从功能上来讲,deque是一个vector和list的结合体 顺序表和链表 deque的结构和优缺点 开辟buff小数组,空间不够了,不扩容,而是开辟一个新的小数组 开辟中控数组(指针数组)指向buff小数组 将已存在的数组指针存在中控数组中间,可以使用下标访…

MICS2024|数字病理与人工智能在乳腺癌精准诊疗中的应用

小罗碎碎念 这两天在厦大开会&#xff0c;医学图像相关的学术会议。来之前一直在我自己的交流群里宣传这个会议&#xff0c;因为自己的推文与病理相关的比较多&#xff0c;所以群里的同行也比较关注这个会议病理相关的内容。 讲者简介 Scopus主页&#xff1a;https://www.scop…

旋转电连接器抗干扰性有哪几个方面?

旋转电连接器作为一种精密的电气传输装置&#xff0c;它实现了两个相对旋转部件间的功率和信号传输。通过旋转电连接器可以传输高频的交流电、高电压的交流电、大电流的交流电、弱小的直流小信号等多种电信号&#xff0c;但是由仪器之间的距离有限&#xff0c;在如此短的距离内…

蓝桥杯算法周赛开赛啦

提醒&#xff1a;19:00算法双周赛准时开启&#xff01; 单题“一血”可获得云课定制便携风扇&#xff01; &#x1f9e7;入榜最高200元&#xff01;还可抽20&#xff5e;100元现金 &#x1fad8;每月参加2次算法双周赛&#xff0c;额外发放88个实验豆&#xff01; 参赛链接…

C++:类和对象 I(访问限定符、this指针)

目录 类的定义 类的大小 访问限定符 实例化 this指针 类的定义 class就是类&#xff0c;class是C中的一个关键字 当然类也可以是C语言中的struct&#xff0c;C兼容struct&#xff0c;甚至还有一些升级 定义类的方式 class Date {}; 和C语言的struct一样&#xff0c;c…

企业国产操作系统选型适配实施方案

【摘要】企业在推动国产化进程时&#xff0c;需选择一款主流、稳定且安全的服务器操作系统作为其系统软件。在产品投入实际生产环境前&#xff0c;对上游软硬件的适配情况有深入了解至关重要。本文将重点介绍银河麒麟高级服务器操作系统V10&#xff08;以下简称麒麟V10&#xf…

昇思25天学习打卡营第14天|K近邻算法实现红酒聚类

红酒Wine数据集 类别(13类属性)&#xff1a;Alcohol&#xff0c;酒精&#xff1b;Malic acid&#xff0c;苹果酸 Ash&#xff0c;灰&#xff1b;Alcalinity of ash&#xff0c;灰的碱度&#xff1b; Magnesium&#xff0c;镁&#xff1b;Total phenols&#xff0c;总酚&#xf…