【Java高级特性】实用类(一)

1.Java API

Java API提供了如下常用的包:

java.lang:编写java程序使用最广泛的包,自动导入到所有程序,包含了java程序的基础类和接口。如:包装类、Math类、String类等常用类。java.lang包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等“系统操作”的类;

java.util:包含了系统辅助类,特别是Collection、List和Map等集合类;

java.io:包含了与输入/输出有关的类,如文件操作类;

java.net:包含了与网络有关的类,如Socket、ServerSocket等类;

java.sql:包含了与数据库相关的类,如Connection、Statement等类。

2.枚举

从Java SE 5.0开始,Java程序设计语言引入了一种新的类型——枚举

枚举:由一组固定常量组成的类型,使用关键字enum定义。

定义枚举语法格式

[Modifer] enum enumName{

enumContantName[,enumContantName2...[;]]

//[field,method]

}

说明

1.Modifer表示访问修饰符,如public等;

2.enumContantName[,enumContantName2...[;]]表示枚举常量列表,枚举常量之间用逗号隔开;

3.[field,method]表示其他的成员,包括构造方法,写在枚举常量的后面。

4.在枚举中,如果除了定义枚举常量,还定义了其他成员,则枚举常量列表必须用分号(;)结尾。

枚举其实就是一种类型,是java.lang.Enum类的子类,继承了Enum类的许多方法。

//枚举类型:enum,枚举类型里的都是静态常量
public enum Genders {
	男,女
}
public class Student {

	public String name;
	public Genders sex;//性别是枚举类型
	
public static void main(String[] args) {
		Student stu=new Student();
		stu.name="张三";
		stu.sex=Genders.男;//给sex赋值只能是Genders枚举类型里已经声明好的数据
		stu.sex=Genders.女;
	}
}

使用枚举的好处

1.在Java中,通常使用枚举表示一组个数有限的值,用来实现对输入的值进行约束检查;

2.在程序中使用枚举的好处总结如下:

-->枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值。

-->枚举更易于编程时输入,使用枚举赋值,只需要输入枚举名,然后输入一个点(.),就能将所有的值显示出来。

-->枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便。

 3.包装类

3.1 概述

Java语言是面向对象的,在设计类时,为每个基本数据类型设计了一个对应的类,称为包装类

包装类均在java.lang包中,包装类和基本数据类型对应关系如下:

基本数据类型包装类
charCharacter
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

其中,Character类和Boolean类继承Object类,Byte、Short、Integer、Long、Float、Double类继承Number类,Number类继承Object类。

 包装类的用途:

包装类作为和基本数据类型对应的类存在,方便对象的操作;

提供了一系列实用的方法;

集合不允许存放基本数据类型数据,存放数字时,使用了包装类

3.2 包装类和基本数据类型的转换

3.2.1 基本数据类型转换成包装类

方法一:使用包装类的构造方法创建包装类对象

所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例

public Type(type value)

Type表示包装类,type表示基本数据类型

如:Integer i=new Integer(1);

// 所有的包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
		byte num1=10;
		Byte byte1=new Byte(num1);

		short num2=100;
		Short short1=new Short(num2);
		
		int num3=1000;
		Integer int1=new Integer(num3);
		
		long num4=1000000000;
		Long long1=new Long(num4);
		
		float num5=12.2F;
		Float float1=new Float(num5);
		
		double num6=12.22;
		Double double1=new Double(num6);
		
		char num7='你';
		Character ch1=new Character(num7);
		
		boolean num8=true;
		Boolean bool=new Boolean(num8);
		Boolean boo=new Boolean(false);

 除Character类外,其他包装类可将一个字符串作为参数构造它们的实例

 public Type(String value)

如:Integer i=new Integer("123");

对于Character类,不能使用第二种构造方法创建Character类的包装类对象,只能是Character charValue = new Character('x')这种形式

//除了Character类,其他包装类可将一个字符串作为参数构造它们的实例
		Byte byte2=new Byte("123");
		
		Short short2=new Short("100");
		
		Integer int2=new Integer("200");
		
		Long long2=new Long("1230000");
		
		Float float2=new Float("12.2");
		
		Double double2=new Double("13.33");
		
		Boolean bool1=new Boolean("true");
		System.out.println(bool1);//true
		
		Boolean bool2=new Boolean("TrUe");
		System.out.println(bool2);//true
		
		Boolean bool3=new Boolean("false");
		System.out.println(bool3);//false
		
		Boolean bool4=new Boolean("1qw3");
		System.out.println(bool4);//false

注意:

Boolean类构造方法参数为String类型时,若该字符串内容是true(不考虑大小写),则该Boolean对象表示true,否则表示false;

当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常。

方法二:使用包装类的valueOf()方法

valueOf()方法是静态方法,它可以接收基本数据类型和字符串作为参数并返回包装类对象。

public static Type valueOf(type value)

如:Integer i=Integer.valueOf(12);

public static Type valueOf(String value)(Character类除外)

如:Integer i=Integer.valueOf("12");

        Float num3=Float.valueOf(34.3F);
		
		Float num4=Float.valueOf("23.2");

		Character n=Character.valueOf('1');//字符->包装类是可以的

对于Character类的valueOf()方法只能这么写:Character ch=Character.valueOf('value');

3.2.2 包装类转换成基本数据类型

包装类转换成基本数据类型通常采用如下方法:

public type typeValue();

其中,type指的是基本数据类型,如byteValue()、charValue()等,相应的返回值为byte、char。

如:Integer int1=new Integer(23);

int int2=int1.intValue();

3.3 包装类常用方法

toString():以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)

String sex=Character.toString('男');

String age=Integer.toString(21);

 parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)

XXX表示基本数据类型

int num=Integer.parseInt("12");

boolean bool=Boolean.parseBoolean("false");

3.4 装箱和拆箱

在Java SE 5.0版本之后,编译器自动完成包装类和基本数据类型的转换。

装箱:基本数据类型转换为包装类;

拆箱:包装类转换成基本数据类型。

4.Math类

java.lang.Math类提供了一些基本数学运算和几何运算的方法以及两个静态常量E(自然对数的底数) 和PI(圆周率)。

Math类中的所有方法都是静态方法,Math类是final类,没有子类。

4.1 Math类常用方法

Math.abs()返回一个数的绝对值
ceil(num)上舍入:返回比num大的最小的整数
floor(num)下舍入:返回比num小的最大的整数
round(num)四舍五入
max()/min()求最大值和最小值
pow()求一个数的指定次幂
random()返回一个[0.0,1.0)之间的double类型数据

代码举例说明:

//Math类的一些常用方法
	public static void main(String[] args) {
		//Math.PI:返回一个无限接近圆周率的double类型的值
		double num=Math.PI;
		System.out.println(num);
		
		//Math.abs()方法:求一个数的绝对值,正数的绝对值是它本身,负数的绝对值是其相反数
		System.out.println(Math.abs(100));
		System.out.println(Math.abs(-100));
		
		//求近似数
		//ceil(num):返回比num大的最小的整数
		System.out.println(Math.ceil(9.1));//10
		//floor(num):返回比num小的最大的整数
		System.out.println(Math.floor(9.9));//9
		//round(num):四舍五入
		System.out.println(Math.round(9.6));//10
		
		//求最大值和最小值
		System.out.println(Math.max(3, 5));
		System.out.println(Math.min(34, 21));
		
		//求一个数的指定次幂:pow()方法
		System.out.println(Math.pow(2, 10));
		
		//求随机数
		//Math.random():返回一个[0.0,1.0)之间的double类型数据
		double random1=Math.random();
		System.out.println(random1);
		//Math.random()*10:返回一个[0.0,10.0)之间的double类型数据
		double random2=Math.random()*10;
		System.out.println(random2);
		//(int)Math.random()*10:返回一个[0,,10)之间的int类型数据
		int random3=(int)(Math.random()*10);
		System.out.println(random3);
		//(int)Math.random()*(num2-num1)+num1):返回一个[num1,num2)之间的int类型数据,num2>num1
		//随机获取一个[30,60)之间的int类型的数据
		int random4=(int)(Math.random()*(60-30)+30);
		System.out.println(random4);
	}

5.Random类

Random类用于生成随机数。Math类的random()方法也可以产生随机数,其实Math类的random()方法底层就是使用Random类实现的

5.1 Random类构造方法

Random() //创建一个新的随机数生成器

Random(long seed) //使用单个long种子创建一个新的随机数生成器

5.2 Random类常用方法

int nextInt():返回下一个随机数,它是此随机数生成器的序列中均匀分布的int值

int nextInt(int n):返回下一个伪随机数,它是取自[0,n)之间均匀分布的int值(n是指定值)

代码举例说明:

public static void main(String[] args) {
		//创建Random对象
		Random random=new Random();
		
		//获取随机数
		int num1=random.nextInt();
		System.out.println(num1);
		
		int num2=random.nextInt(10);//获取[0,10)之间的一个int类型数据
		System.out.println(num2);
		
		System.out.println(random.nextBoolean());//随机返回一个boolean类型的值
		
		Random r1=new Random(1000);
		Random r2=new Random(100);
		System.out.println(r1.nextInt());
		System.out.println(r2.nextInt());
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值