java的常用类及异常处理

包装类

(1)基本类型与包装类之间的转换

基本类型转换为包装类:
      例如:int i=0;
	            Integer in=new Integer(i);

包装类转换为基本类型:
    使用:基本类型value()方法
	 例如:  int j=in.intValue();
	 

(2)基本类型与包装类的区别

1.基本类型不是对象。
2.声明方式不同,基本类型的声明不需要new关键字,包装类型的声明需要new关键字。
3.存储方式及位置不同,基本类型是直接存储变量的值并保存于栈中,能实现高效的存取,包装类型需要通过对象名指向地址值,具体的值存放于堆中。
4.初始值不同,包装类型的初始值为null,基本类型的初始值视具体的数据类型而定。
5.使用方式不同,集合类只能使用包装类型。

(3)Integer类

常用的一些方法:
    static Integer valueOf(int i)      返回一个表示指定的 int 值的 Integer 实例。 
	static Integer valueOf(String s)  返回保存指定的 String 的值的 Integer 对象。 
	static int parseInt(String s)   将字符串参数作为有符号的十进制整数进行解析。 


(4)自动拆箱和自动装箱

装箱:把一个基本数据类型的数据赋值给一个其对应的包装类的过程

拆箱:把一个包装类对象赋值给一个其对应的基本数据类型的变量的过程

JDK 1.5以后自动装箱  

自动装箱拆箱只支持 基本数据类型和其对应的包装类

(5)享元模式

正数中的几个包装类内部把常用  [-128,127] 的数据缓存起来了

字符串相关类

(1)String

String类表示字符串

创建字符串的两种方式:
方式一:String str="str";
方式二:String str=new String("str");

两种方式的区别:
方式一只开辟一块堆内存空间,并且会自动进入字符串常量池,不会产生垃圾。
方式二会开辟两块堆内存空间,其中一块会变成垃圾被系统回收,而且不能够自动入池,需要通过public  String intern();方法进行手工入池。

 注意:在开发的过程中不会采用构造方法进行字符串的实例化。

字符串拼接的两种方式:
一:使用常量拼接,会检查常量区,如果有不会创建
二:使用变量拼接,不会检查常量区,直接创建对象

字符串常量池:
(1)	当使用String  str = “A” ;的方式赋值,会将该字符串值【对象】放入到常量池
(2)	当再次使用String  st1 = “A”的方式会先检查常量池是否有“A”值,
①	如果存在直接引用
②	如果不存在,会放入常量池
(3)	常量池与享元模式相似,但是也有区别,享元模式是已经缓存,但是常量池是在使用的时候缓存

String类的常用方法:
 char charAt(int index)  返回指定索引处的 char 值。 索引位置是从0开始
 
  boolean endsWith(String suffix)  测试此字符串是否以指定的后缀结束。 
 
  int indexOf(int ch)    返回指定字符在此字符串中第一次出现处的索引。 
 
  boolean matches(String regex)  告知此字符串是否匹配给定的正则表达式。 
 
   String replace(char oldChar, char newChar)   返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 
 
   String[] split(String regex)    根据给定正则表达式的匹配拆分此字符串。 
 
   String substring(int beginIndex, int endIndex)  返回一个新字符串,它是此字符串的一个子字符串。[beginIndex,endIndex) 
 
   String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 

(2)StringBuffer/StringBuilder

String、StringBuffer和StringBuilder没有继承关系
但是都表示字符串
String 与 StringBuilder StringBuffer都是对字符串进行操作
String 底层是一个final修饰的char数组 因此内容不可变
在做字符串拼接的时候
String拼接会创建多个对象 导致内存开销大 运行时间长
StringBuilder StringBuffer都是可变的字符序列
在做字符串拼接的时候 只会创建一个对象 因此大大的较少了内存开销 运行时间短
StringBuilder 效率更高 因为线程不安全
StringBuffer  效率相对较低 但是线程安全

数学相关类

(1)Math

含有执行基本数学运算的方法

(2)BigInteger

(3)BigDecimal

System/Rumtime/java的垃圾回收机制

System类

System类的常用方法:

    static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 
 
	static long currentTimeMillis()   返回以毫秒为单位的当前时间。 1000ms=1s
 
 	static void exit(int status)    终止当前正在运行的 Java 虚拟机。 非 0 的状态码表示异常终止。 
 
 	static void gc()   运行垃圾回收器 
 
 	getenv()    返回一个不能修改的当前系统环境的字符串映射视图。

static Runtime getRuntime()     返回与当前 Java 应用程序相关的运行时对象。
 
   Process exec(String command)  在单独的进程中执行指定的字符串命令。 

面试题 请说明finalize final finally 的区别?
完全不同的三个东西
  finalize--Object里面的垃圾回收的方法
  final---修饰符
  finally---异常结构里面的代码块

随机数

获取随机数的方式
 方式一:通过Math类的random方法获取
  方式二:Random类
  方式三:JDK1.7以后的方法--->ThreadLocalRandom
  方式四:UUID

日期/时间相关类

(1)Date

根据系统获得时间值

(2)DateFormat

作用一: 把一个Date对象可以转成我们希望的一个结果样式(字符串)

作用二: 也可以把一个字符串解析为一个Date对象

(3)Calendar(日历类)

异常处理机制

(1)遇到的异常有哪些

 NullPointerException: 空对象调用方法的时候出现		 
 ArrayIndexOutOfBoundsException:数组越界
ArithmeticException:算术异常
ClassCastException:类型转换异常
ClassNotFoundException:反射

(2)异常的处理方式

 *   	1.捕获异常
 *   	try{
 *   		可能会发生异常的代码
 *   	}catch(异常的类型 变量名){变量名:对象,有相应的方法获取错误信息
 *   		1.打印异常
 *   		2.获取错误信息
 *   		3.记录日志--IO  日志的框架
 *   	}
 *   	如果  try里面的代码报错,就执行 catch里面的代码
 *   	如果  try里面的代码不报错,catch里面的代码不执行


/*异常的处理方式二:
 * 	抛异常:自己本身不处理异常,交给调用者处理.
 * 	语法:
 *  方法的形参后面 跟上 throws  异常类型
 * 	ex:static void print(int a,int b) throws ArithmeticException{}
 * 如果抛了异常,代码一旦报错后续的所有代码都不执行


//自定义异常
发布了28 篇原创文章 · 获赞 15 · 访问量 1126

猜你喜欢

转载自blog.csdn.net/W1184394406/article/details/103763395
今日推荐