Java基础15 Java常用类

分析:

  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种基本数据类型,把基本数据类型看做对象进行处理

| 基本类型 | 包装类 |

| — | — |

| int | Integer |

| byte | Byte |

| short | Short |

| long | Long |

| float | Float |

| double | Double |

| char | Character |

| boolean | Boolean |

创建方法

Integer num1 = 1000;

Integer num2 = new Integer(1000);

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

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;

  1. 拆箱:引用类型转换为基本数据类型

如:Integer n = 200;

int m = n; //拆箱

字符串与基本类型的转换


字符串转换为int类型

String s = “1234”;

int num = Integer.parseInt(s);

其他类型:

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(日期类型,数值) 实现日期某个部分的追溯

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值