Java(常用类)


1.Number类

Java 为每种基本数据类型分别设计了对应的类,称之为包装类。
在这里插入图片描述

基本数据类型大小最小值最大值默认值包装类
byte8bits-2^72^7-10Byte
short16bits-2^152^15-10Short
int32bits-2^312^31-10Integer
long64bits-2^632^63-10LLong
float32bitsIEEE 754IEEE 7540.0fFloat
double64bitsIEEE 754IEEE 7540.odDouble
char16-bitUnicode 0(’\u0000’)Unicode 2^16-1(’\ufffff’)‘\u0000’Character
boolean---falseBoolean

用于高精度计算的类:BigInteger(支持任意精度的整数)和BigDecimal(支持任意精度的浮点数),它们可以完成和基本数据类型一样的操作,只不过必须以方法调用的方式来实现,也因此速度会慢很多,以速度换精度

装箱:基本数据类型转换为包装类的过程。
拆箱:包装类转换为基本数据类型的过程。

什么是自动装箱、拆箱? 基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换。
有如下几种情况时,编译器会自动帮我们进行装箱或拆箱.出处

  1. 进行 = 赋值操作(装箱或拆箱)
  2. 进行+,-,*,/混合运算 (拆箱)
  3. 进行>,<,==比较运算(拆箱)
  4. 调用equals进行比较(装箱)
  5. ArrayList,HashMap等集合类 添加基础类型数据时(装箱)
    以float和Float为例,装箱就是调用Float的valueOf方法new一个Float并赋值,拆箱就是调用Float对象的floatValue方法并赋值返回给float。

下面再总结一下包装类常用的方法:详细文档
Integer

  • 构造方法 Integer(int value/ String str) 构造一个新对象,表示指定的int值或String参数所指示的int值
  • byteValue(), shortValue(), intValue() 以T类型返回该Integer的值
  • toString() 返回一个表示该Integer值的String对象
  • boolean equals(Object obj) 比较两对象是否相等
  • compareTo(Integer) 在数值上比较两个Integer对象,相等返回0,比参数小返回负值,比参数大返回正值
  • valueOf(String str) 返回保存指定String值的Integer对象
  • parseInt()String str) 将字符串转换为int值
  • 四个常量 Integer.MAX_VALUE; Integer.MIN_VALUE; Integer.SIZE(以二进制补码形式表示 int 值的比特位数); Integr.TYPE(表示基本类型int的Class实例)

一些Math类常用的运算方法
Java时间日期的处理

2.String

2.1String 不可变字符串

首先值得注意的是String对象是不可变(只读)的,即声明为final class,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,用来包含修改后的字符串的内容。在Java8中使用private final char value[]; 来存储数据。下面看看几种创建字符串对象的方式:

String s1 = "Runoob";              // String 直接创建,会直接放入字符串常量池(公共池)中
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

需要注意的是:使⽤new String(“Runoob”)⼀共会创建两个字符串对象(前提是String Pool 中还没有 “Runoob” 字符串对象)

  • “Runoob” 属于字符串字⾯量,因此编译时期会在 String Pool 中创建⼀个字符串对象,指向这个 "abc"字符串字⾯量;
  • 使⽤ new 的⽅式会在堆中创建⼀个字符串对象。
    在这里插入图片描述

String Pool:字符串常量池,保存着所有字符串字面量,这些字⾯量在编译时期就确定。

可以使⽤ String 的 str = str1.intern() ⽅法在运⾏过程将字符串添加到 String Pool 中。当⼀个字符串调⽤ intern() ⽅法时,如果 String Pool 中已经存在⼀个字符串和该字符串值相等(使⽤equals() ⽅法进⾏确定),那么就会返回 String Pool 中字符串的引⽤;否则,就会在 String Pool 中添加⼀个新的字符串,并返回这个新字符串的引⽤。

String不可变的好处

  • 可以缓存 hash 值。因为 String 的 hash 值经常被使⽤,例如 String ⽤做 HashMap 的 key。不可变的特性可以使得 hash值也不可变,因此只需要进⾏⼀次计算。
  • String Pool 的需要。如果⼀个 String 对象已经被创建过了,那么就会从 String Pool 中取得引⽤。只有 String 是不可变的,才可能使⽤ String Pool。
  • 安全性。String 经常作为参数,String 不可变性可以保证参数不可变
  • 线程安全。String 不可变性天⽣具备线程安全,可以在多个线程中安全地使⽤。
    `
方法应用
str1.concat(str2)连接两个字符串
str.length()返回字符串长度
str.equal(_str), str.equalIgnoreCase(忽略大小写)比较两个String内容是否相同
String.valueOf()返回表示参数内容的String
str.toLowerCase(), str.toUpperCase()返回大小写转换后的新String
str.trim()返回去除str两端空格后的新String。如果没有改变发生,则返回原始的String
str.subString(int beginIndex, (int endIndex))返回从索引开始位置到结尾或索引结束位置的新String,[begin,end)
str.split(_str, (int limit))按指定_str分隔符对原字符串进行分割,分割后的内容存入字符串数组中。limit表示分割后产生的字符串限制个数
str.replace(String oldChar, String newChar)用于将str里所有的oldChar替换为newChar
str.charAt(int)返回索引位置上的字符
str.indexof(String/char, (int fromIndex)),str.lastIndexof(String/char, (int fromIndex))返回字符(串)在str中首次出现的索引位置, last为从后面向前面搜索

2.2StringBuffer和StringBuilder 可变字符串

在这里插入图片描述
StringBuilder类(jdk1.5新增)和StringBuffer类均为可变字符串类(字符串缓冲区),方法基本相似。
建议操作少量数据使用String,单线程操作大量数据((或通常情况下需要可变字符串))使用StringBuilder,多线程操作大量数据使用StringBuffer。

  • StringBuilder() 构造器
  • str.toString() 返回一个与缓冲区内容相同得字符串
  • str.append(String _str/ char c) 追加一个字符串或字符
  • str.insert(int i, String _str/ char c) 在第i个位置插入一个字符串或字符
  • str.reverse() 反转字符串
  • str.delete(int beginIndex, int endIndex) 删除字符串[begin,end)

3.Arrays类

Arrays类里均为static修饰的方法,因此可直接通过类名调用,即Arrays.xxx(x)。

  • static List asList(T[] a) 返回将参数数组转换为固定大小的列表
  • int binarySearch ( T[] a,(int fromIndex,int toIndex), T key ) 前提数组元素已按升序排列。返回key元素在数组中(或从fromIndex到toIndex查找)出现的索引
  • T[] copeOf ( T[] old, int length) 将old数组复制成一个新数组,length为新数组长度(会出现截断或补零(数值类型)、false(布尔类型)、null(引用类型)的操作)。相似的还有T[] copeOfRange( T[] old, int fromIndex, int toIndex )
  • boolean equals( T[] a, T[] _a ) 当a.length=_a.length且a与_a元素一一相同,返回true
  • void fill( T[] a, (int fromIndex, int toIndex), T val) 以val值填充数组
  • void sort( T[] a, (int fromIndex, int toIndex) ) 排序
  • String toString(T[] a) 将数组转换为字符串。即按顺序将元素连接在一起,并用逗号隔开
  • String replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。

4.Scanner类

import java.util.Scanner
public class ScannerDemo {
	 public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); //从键盘接收数据
		//next方式接收 scanner demo
		while(sc.hasNext()) {
			String str = scan.next(); //str = scanner;demo无法接收到
		}
		//nextLine方式接收
		while(sc.hasNextLine()) {
			String str = scan.nextLine();
		}
		//接受int或float等数据类型
		while(sc.hasNextInt()) {
			int i = scan.nextInt(); //其余数据类型相似
		}
		sc.close(); //不要忘记关闭
	}
}

next()和nextLine()区别:
next():

  • 一定要读取到有效字符后才可以结束输入。
  • 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 可以获得空白。

5.Object类

Object 类是所有类的父类,即Java所有的类都默认继承了Object,可以使用它的所有方法。因此下面两种表示是一样的。

public class Demo extends Object{
}
public class Demo {
}

常用方法:

  • boolean equals(Object obj) 比较两个对象是否相等。判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。
  • String toString() 返回对象的字符串表示形式
  • int hashCode() 获取对象的hash值
  • Class<?> getClass() 获取对象运行时的实例类
  • void notify() / notifyAll 唤醒在该对象上等待的某个或所有线程
  • void wait() 让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值