百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

提高开发效率,熟悉Java中的一些常用类

toyiye 2024-08-22 23:09 5 浏览 0 评论


前言

Java提供了强大的类库,帮助开发者快速完成开发任务,这也是其叱咤风云20多年的一个重要原因。我们现在就学习一些Java中常用的类。本文将介绍:

  • 字符串相关:String、 StringBuffer、 StringBuilder
  • 包装类:Integer等
  • 日期相关: Date、 Calendar、 SimpleDateFormat
  • 其他:Math、Random、Runtime、System

字符串相关

Java提供了处理字符串的几个类:String、 StringBuffer、 StringBuilder,其中最常用的就是String类

String类

创建方式

创建方式1:赋值常量

String str = "hello";

使用双引号括起来的内容叫字符串常量值,字符串常量值分配在方法区的常量池中。常量池的好处:

  1. 节约内存,反复使用,不需要重新分配
  2. 性能高,直接调用,省去创建对象的时间

面试题1:

String name1 = "zhangsan";
String name2 = "zhangsan";
System.out.println(name1==name2);  			输出true
System.out.println(name1.equals(name2)); 	输出true

分析:

  1. equals是用于比较String的内容,==用于比较String对象的内存地址
  2. name1="zhangsan",在常量池中创建"zhangsan"
  3. name2="zhangsan",会把池中常量的地址直接赋值给name2

面试题2:

String name1 = "zhangsan";
String name2 = "zha"+"ng"+"san";
System.out.println(name1==name2);  输出true

分析: 如果加号两边都是字符串常量,JVM会到常量池中直接查找连接后的结果。

面试题3:

String name1 = "zhangsan";
String name2 = "zhang";
String name3 = name2 + "san";
System.out.println(name1==name3);  输出false

分析:如果加号两边出现了变量,就不会在常量池中,而是在堆区创建对象

创建方式2:使用new创建对象

String name = new String("zhangsan");

使用new都会在堆中创建新的对象

其他创建方式:通过字节数组创建字符串

String(byte[] bytes,String charset)
bytes 		字节数组
charset 	字符编码,一般使用UTF-8

通过字符数组创建字符串

String(char[] chars)
如:
char[] chars = {‘z’,'h','a','n','g'};
String name = new String(chars); 

字符串的不变性

/** The value is used for character storage. */
private final char value[];

通过String类的源码可知,字符串的内容保存在字符数组中,该数组是final的,一旦初始化后就不可修改。如果要修改字符串,就会创建新的对象,频繁修改会大量消耗内存空间和时间。如:

String str = "hello";str += "world";

+=运算在底层执行的是:

str = new StringBuilder("hello").append("world").toString();

String常用方法

获得字符串长度

int length()

获得子字符串出现的位置

int indexOf(String s) 		

在字符串中查找子字符串第一次出现的位置,没找到返回-1;

int indexOf(String s,int start)   

指定了开始查找的位置

int lastIndexOf(String s)		

截取字符串

String substring(int start,int end)
String substring(int start)

替换

String replace(String oldStr,String newStr)

比较字符串内容

boolean equals(String s) 			是否完全相同
boolean equalsIgnoreCase(String s)  忽略大小写进行比较
boolean startsWith(String s)		判断字符串是否以某字符串开头
boolean endsWith(String s) 		    判断字符串是否以某字符串结尾
int compareTo(String s)				比较大小,返回正数(大于)、负数(小于)、0(相等)

大小写转换

String toUpperCase() 大写
String toLowerCase() 小写

去左右空格

String trim()

拆分字符串

String[] split(String separator) 注意:某些特殊符号分割符需要进行转义,如:\\+

StringBuilder类

如果字符串变量需要频繁修改,就会创建大量字符串对象,大量消耗内存空间。为了解决这个问题,可以使用StringBuilder。

String和StringBuilder的区别:

  • String的字符串是不可修改,如果修改会创建新字符串,浪费内存。
  • StringBuilder的字符串是可以修改的,不会创建新字符串。

创建方法

创建空值的对象
StringBuilder strb = new StringBuilder();
创建有默认值的对象
StringBuilder strb = new StringBuilder("默认值");

StringBuilder常用方法

转换为String

String toString() 

追加

StringBuilder append(String str) 

替换

StringBuilder replace(int start,int end,String newS) 

插入

StringBuilder insert(int offset,String s) 

删除

StringBuilder delete(int start,int end) 

反转

StringBuilder reverse() 

StringBuffer类

StringBuffer的特点和StringBuilder相似,都是在自身的数组上进行的修改,常用方法也一样。不同点:

  1. StringBuffer的方法是线程安全的,StringBuilder是非线程安全的
  2. StringBuilder的执行效率高于StringBuffer

包装类

Java中的8种基本数据类型不是引用类型,也不能创建对象,这就违背了Java是完全面向对象语言这一前提。Java推出8个包装类,把基本类型包装成对象。

包装类是什么

包装类包装了8种基本数据类型,把基本数据类型看做对象进行处理

创建方法

String str = "hello";

面试题:下面代码的结果是:

Integer n1 = 100;
Integer n2 = 100;
System.out.println(n1 == n2); true
Integer n3 = 1000;
Integer n4 = 1000;
System.out.println(n3 == n4); false

分析:整数常量也可以保存到常量池中,取值范围是byte范围(-128~127),超过此范围不存常量池,在堆创建对象

装箱和拆箱

装箱与拆箱是基本数据类型和引用类型的相互转换。

  1. 装箱:基本数据类型转换为引用类型如: Integer n = 200;
  2. 拆箱:引用类型转换为基本数据类型如:Integer n = 200;int m = n; //拆箱

字符串与基本类型的转换

字符串转换为int类型

String name1 = "zhangsan";
String name2 = "zhangsan";
System.out.println(name1==name2);  			输出true
System.out.println(name1.equals(name2)); 	输出true

其他类型:

Float.parseFloat(字符串)   转换为Float
Double.parseDouble(字符串) 转换为Double
                 ... 

int类型转换为字符串

String s = String.valueOf(num);

int num = 20;
String s = "" + num;

日期和时间处理

java.util包下面提供了一些时间处理相关的API。

Date类

处理日期时间创建方法1:

Date date = new Date(); 获得当前的时间

创建方法2:

Date date = new Date(long); 指定时间的1900-1-1到现在的毫秒数

常用方法

int getYear()			获得年
int getMonth()			获得月
int getDate()			获得天
int getHours()			获得小时
int getMinutes()		获得分钟
int getSeconds()		获得分钟
void setYear(int year) 	设置年
...

Calendar 类

日历类可以获得和修改日期的某个部分创建Calendar对象

Calendar calendar = Calendar.getInstance();

常用方法:

get(日期类型)	   		获得日期的某个部分
Calendar.YEAR
Calendar.MONTH	  		月份从0开始
....
set(日期类型,数值)		设置日期的某个部分
add(日期类型,数值)		实现日期某个部分的追溯

SimpleDateFormat类

对日期进行格式化创建对象

SimpleDateFormat sdf = new SimpleDateFormat("日期格式字符串");
日期格式字符串,如:"yyyy-MM-dd hh:mm:ss"
yyyy	代表4位的年份
MM		代表2位的月份
dd		代表2位的日期
hh/HH	12小时制/24小时制
mm		代表分钟
ss		代表秒钟
a		代表AM/PM

将日期进行格式化

String format(Date对象);

将字符串转换为日期

Date parse(String对象);

其他常用类

Math类

数学运算



Random类

获得随机数

Random random = new Random();
random.nextInt(100); //0 ~ 100间随机整数

Runtime类

系统运行时,获得和系统有关的信息

Runtime rt = Runtime.getRuntime();

PS:GC(Garbege Collector)垃圾收集器,JVM会单独开一线程,定时扫描内存中没有使用的对象。GC的启动没有特定的时间,如果想唤醒GC,可以调用gc方法。

String s = new String("xxxx"); //新的String对象
s = null; //没有引用指向的String对象会被回收

System类


如果你都看到这了,加个关注吧,后面新的内容最快时间分享给大家。

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码