一、包装类 √

二、String类 ★

三、StringBuffer和StringBuilder类 ★

四、Math类

五、System类

六、Arrays类

七、BigInteger类和BigDecimal类

八、Date日期类、Calendar日历类以及新的日期

一、包装类

1.概念:为8大基本数据类型对应的提供了引用数据类型,则这些引用数据类型称为包装类

2.数据类型

1)基本数据类型

2)引用数据类型

  • 数组
  • 用class定义的
  • 用interface定义的

3.需求如

① 获取int类型的最大值

② 将某个整数转换成十六进制形式

int i=10;

Integer i2=new Integer(i);

4.分类

byte———————————— Byte
short———————————— Short
int————————————— Integer
long———————————— Long
float———————————— Float
double——————————— Double
char———————————— Character
boolean——————————  Boolean

5.基本类型和包装类型之间的转换

jdk5.0之前:

手动装箱

方式一:Integer i = new Integer(10);

方式二:Integer i2 = Integer.valueOf(10);

手动拆箱

int j = i.intValue();

jdk5.0之后:

自动装箱:

Integer i = 10;

自动拆箱:

int j = i;

6.包装类型和String类型之间的转换

包装类型————>String类型

Integer i = 10;
//方式1:
String s1= i.toString(); //方式2:
String s2 = String.valueOf(i); //方式3:
String s3 = i+""; System.out.println(s3);

String————>包装类

//方式1:
Integer j = new Integer(s1); //方式2:
Integer j2 = Integer.valueOf(s2);

7.基本类型和String类型之间的转换

基本类型————>String类型

int i = 10;
//方式1:
String s=i+"";
//方式2:
String s2 = String.valueOf(i);

String————>基本类型(除了char类型)

int j = Integer.parseInt(s);

char c = s.charAt(0);

8.包装类型中的常见API

1)通用的方法:

valueOf:将String类型或基本类型转换成对应的包装类型
parseXX:将String类型转换成对应的基本类型
xxValue:将包装类型转换成对应的基本类型

2)Character类的常见方法:
toUpperCase
toLowerCase
isUpperCase
isLowerCase
isDigit
isLetter
isWhiteSpace

二、String类

1.理解

String类用于保存一组字符串序列

"john"、""都相当于字符串常量对象

2.创建对象

方式1:直接赋值

String s = "hello";

方式2:通过调用构造器

String s = new String("hello");

【面试题】String两种创建对象方式的区别

方式一:先去常量池查看是否有“hello”字符序列,如果没有,则创建,如果有直接引用该地址,s指向的是常量池的对象

方式二:需要在堆中创建对象,该对象维护了一个value属性,value指向常量池的“hello”,如果常量池中没有“hello”,则创建,再指向;如果已经有了,则直接用value指向
s指向的是堆中的对象

3.String类的常见方法

方法名 用途
 length   获取字符个数
 charAt  获取指定索引处的字符
 toUpperCase  转大写
 toLowerCase  转小写
 indexOf  获取字符或字符串第一次出现的索引,如果找不到返回-1
 lastIndexOf  获取字符或字符串最后一次出现的索引,如果找不到返回-1
 startsWith  判断是否以xx开头
 endsWith  判断是否以XX结尾
 regionMatches  判断是否某范围内的子串一致
 contains  判断子串是否存在,返回true|false
 compareTo  比较两个字符串大小
 equals/equalsIgnoreCase  判断字符串内容是否相等
 substring  截取子串
 replace/replaceAll  替换
 trim  去前后空格
 split  拆分
 concat  拼接字符串
 toCharArray  转换成字符数组

三、StringBuffer类

1.String类和StringBuffer的对比

相同点:都用于保存字符串,都可以对字符串进行一些增删或其他处理的操作

不同点:

  • String类用于保存字符串常量
  • StringBuffer类用于保存字符串变量

2.StringBuffer类创建对象

只能通过调用构造器创建对象!

new StringBuffer();      //构造一个初始容量为16的char数组
new StringBuffer(string); //构造一个初始容量为string.length+16的数组,并初始化值为string
new StringBuffer(capacity); //构造一个初始容量为capacity的char数组

3.StringBuffer类和String类之间的转换

1)StringBuffer——>String

StringBuffer buffer = new StringBuffer("john");

//方式一:
String s1 = buffer.toString(); //方式二:
String s2 = new String(buffer);

2)String————>StringBuffer

String s = "鸠摩智";
//方式一:
StringBuffer b1 = new StringBuffer(s); //方式二:
StringBuffer b2 = new StringBuffer();
b2.append(s);

4.StringBuffer类的方法

增 append

删 delete

改 replace

查 indexOf/lastIndexOf

插入 insert

反转 reverse

长度 length

5.StringBuffer和StringBuilder的对比

  共同点 版本 线程安全 (同步)效率
StringBuffer 保存可变字符串 安全 较低
StringBuilder 保存可变字符串 不安全 较高
  • 线程安全性

String 中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。 

  • 性能

每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StringBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

  • 对于三者使用的总结:
  1. 操作少量的数据: 适用String
  2. 单线程操作字符串缓冲区下操作大量数据: 适用StringBuilder
  3. 多线程操作字符串缓冲区下操作大量数据: 适用StringBuffer

(效率:StringBuilder>StringBuffer>String)

四、Math类

包含一系列的用于数学运算的静态方法。

1.常见方法

方法名 作用
sqrt 求开方
pow 求幂
ceil 向上取整
floor 向下取整
round 四舍五入,返回整型
abs 绝对值
random 随机数
max 最大值
min 最小值

五、Arrays类

包含一系列用于数组管理和操作的方法

常见方法:

sort(T[]) :对数组的元素进行自然排序,要求元素必须实现了Comparable

sort(T[],Comparator):对数组的元素进行定制排序,元素本身可以不实现Comparable

binarySearch(T[],key):对数组通过二分搜索法进行查找,如果key找到了,返回索引,否则返回负数。要求:要查找的数组必须提前排好序!

copyOf(T[],length):复制数组的元素

equals(T[],T[]):判断两个数组的内容是否相等

fill(T[],key):填充数组的各元素值为key

toString():将数组各元素进行拼接,返回String

六、System类

常见方法:

arrayCopy 复制数组元素,一般使用Arrays.copyOf代替
exit:退出程序
currentTimeMillens:获取当前时间距离1970-1-1的毫秒数。
gc:运行垃圾回收器

七、BigDecimal和BigInteger类

常见方法:

add 加法
substract减法
multiply乘法
divide除法,注意:可以添加参数2设置四舍五入模式

八、日期类

1.第一代日期

java.util.Date类
java.text.SimpleDateFormat类

2.第二代日期
java.util.Calendar类

3.第三代日期(jdk8新特性)
LocalDate|LocalTime|LocalDateTime类:类似于Calendar
Instant:类似于Date
DateTimeFormatter:类似于SimpleDateFormat

Java中的常用类:包装类、String、StringBuffer、StringBuilder、Math、System、Arrays、BigInteger、BigDecimal、Data、Calendar的更多相关文章

  1. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  2. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  3. Java中特殊的类——包装类

    Java中特殊的类--包装类 包装类就是将基本数据类型封装在类中. 1.包装类 (1)自定义包装类 将基本数据类型包装成一个类对象的本质就是使用Object进行接收处理. 此时IntDemo类就是in ...

  4. java 中的常用类

    Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等. 基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能 ...

  5. Java学习笔记-Java中的常用类

    Java中有很多类是很常用的,此处列举System,Runtime,Date,Calendar,Math System System:类中的方法和属性都是静态的 字段摘要 static PrintSt ...

  6. Java中的Scanner类和String类

    1:Scanner的使用(了解)    (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西.            它其实是标准的输入流,对应于键 ...

  7. Java中的常用类——Arrays

    数组工具类java.util.Arrays Arrays类中的方法都是static修饰的静态方法,因此可以直接使用类名.方法名来调用,而不用通过new使用对象来调用(是"不用"不是 ...

  8. Java中的常用类有哪些

    1NumberFormat 2DecimalFormat 3BigDecimal 4Math 5Random 6DateFormat 7SimpleDateFormat 8Calendar 9Date ...

  9. Java常用类之String类、Stringbuffer和Random类练习

    定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /** * 定义一个StringBuff ...

随机推荐

  1. Python核心技术与实战——十|面向对象的案例分析

    今天通过面向对象来对照一个案例分析一下,主要模拟敏捷开发过程中的迭代开发流程,巩固面向对象的程序设计思想. 我们从一个最简单的搜索做起,一步步的对其进行优化,首先我们要知道一个搜索引擎的构造:搜索器. ...

  2. C语言对传入参数的处理

    /* Loop through argv parsing options. */    while ((c = getopt(argc, argv, ":f:a:l:h")) != ...

  3. springboot+HttpInvoke 实现RPC调用

    开始用springboot2+hession4实现RPC服务时,发现第一个服务可以调用成功,但第二个就一直报 '<' is an unknown code.第一个服务还是可以调用的.参考网上的方 ...

  4. Python(3) 进制转换

    2进制 :0b8进制: 0o16进制: 0x10进制:原来的数据 进制转换:bin() 方法:转化为 2进制 >>> bin(10)'0b1010'oct() 方法:转化为 8进制& ...

  5. bzoj4883 [Lydsy1705月赛]棋盘上的守卫 最小生成基环树森林

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4883 题解 每一行和每一列都必须要被覆盖. 考虑对于每一行和每一列都建立一个点,一行和一列之间 ...

  6. python-第三方包的安装和升级和卸载

    安装源: 豆瓣   http://pypi.douban.com/simple/ 本地安装: egg文件:  使用settools自带的安装脚本easy_install进行安装 whl文件:      ...

  7. Python图谱

    Reference: https://time.geekbang.org/column/article/94311

  8. Codeforces Round #596 Div1 A~E题解

    我好菜啊 A 题意: 定义p-二进制数为2^k-p,给出n和p,求用最小个数的p-二进制数来表示n 1<=n<=10^9,-1000<=p<=1000 题解: 猜结论,答案不会 ...

  9. 【FJ省队训练&&NOIP夏令营】酱油&&滚粗记

    FJOI2016省队训练滚粗记 2016.07.03~2016.07.06(Day1~5) 在学校期末考.因为才省选二试too young too simple爆蛋了所以下半个学期只能滚回去读文化课, ...

  10. 网页分页page

    public class PageBean { private int page; // 第几页 private int pageSize; // 每页记录数 private int start; / ...