java实用类.docx
- 文档编号:24330949
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:43
- 大小:401.27KB
java实用类.docx
《java实用类.docx》由会员分享,可在线阅读,更多相关《java实用类.docx(43页珍藏版)》请在冰豆网上搜索。
java实用类
目标
1.能够定义并使用枚举类型
2.了解包装类及装箱、拆箱概念
3.会使用Math类进行数学运算
4.会使用String操作字符串
5.会使用StringBuffer操作字符串
6.会使用Date类和Calendar类操作日期时间
7.会使用SimpleDateFormat类格式化日期时间
8.会使用Random类获取随机数
1、枚举
1.1为什么需要枚举
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
例如:
交通灯(红、黄、绿)、性别(男、女)、星期(星期一、二、三…..)、分数等级(A、B、C、D、E)
1.类型安全
2.易于输入
3.代码清晰
1.2枚举的实现-补充
1.JDK5新增的enum关键字用于定义一个枚举类。
2.若枚举只有一个成员,则可以作为一种单例模式的实现方式
在枚举类中定义枚举值(大写)
enumGender{
MALE,FEMALE;
}
使用javap命令
发现其中每一个枚举值都是枚举类的具体实例对象.只不过是静态常量.
枚举类具有如下特性:
枚举类也是一种特殊形式的Java类。
枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造方法.
1.枚举类的属性
1)枚举类对象的属性不应允许被改动,所以应该使用privatefinal修饰
2)枚举类的使用privatefinal修饰的属性应该在构造器中为其赋值
3)若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数
2.枚举类特点
1)必须在枚举类的第一行声明枚举类对象。
2)枚举类和普通类的区别:
a)使用enum定义的枚举类默认继承了java.lang.Enum类
b)枚举类的构造器只能使用private访问控制符
c)枚举类的所有实例必须在枚举类中显式列出(,分隔;结尾).列出的实例系统会自动添加publicstaticfinal修饰
3)JDK1.5中可以在switch表达式中使用Enum定义的枚举类的对象作为表达式,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定
4)枚举类也可以实现接口(序列化)、或继承抽象类,可以让每个枚举值分别来实现该方法
3.枚举类的主要方法
1)values()方法:
返回枚举类型的对象数组。
该方法可以很方便地遍历所有的枚举值。
2)valueOf(Stringstr):
可以把一个字符串转为对应的枚举类对象。
要求字符串必须是枚举类对象的“名字”。
如不是,会有运行时异常。
4.带构造方法的枚举类
publicclassDemo1{
publicstaticvoidmain(String[]args){
Gendermale=Gender.MALE;
System.out.println(male.getInfo());
}
}
enumGender{
MALE("男"),FEMALE;
//成员变量
privateStringinfo;
//构造方法
privateGender(){
}
privateGender(Stringinfo){
this.info=info;
}
//成员方法
publicStringgetInfo(){
returninfo;
}
}
5.带抽象方法的枚举类
枚举类可以声明抽象方法,但是要有具体的枚举值去实现.
publicclassDemo1{
publicstaticvoidmain(String[]args){
Gendermale=Gender.MALE;
System.out.println(male.getInfo());
male.speak();
}
}
enumGender{
MALE("男"){
@Override
publicvoidspeak(){
System.out.println("是男人");
}
},
FEMALE{
@Override
publicvoidspeak(){
System.out.println("是女人");
}
};
//成员变量
privateStringinfo;
//构造方法
privateGender(){
}
privateGender(Stringinfo){
this.info=info;
}
//成员方法
publicStringgetInfo(){
returninfo;
}
publicabstractvoidspeak();
}
1.3演示案例
1.未使用枚举
/**
*未使用枚举:
*根据用户输入的周几这个数字,给出相应提示
*@authorpc
*
*/
publicclassWeekDemo1{
/**
*做什么事情
*@paramday
*/
publicvoiddoWhat(intday){
//使用条件判断
if(day>7||day<1){
System.out.println("参数错误,应在1-7之间");
return;
}
switch(day){
case1:
case2:
case3:
case4:
case5:
System.out.println("工作日,努力写代码!
");
break;
case6:
System.out.println("星期六,休息!
看电影!
");
break;
case7:
System.out.println("星期日,休息!
看电影!
");
break;
default:
System.out.println("地球上的一个星期就7天");
}
}
publicstaticvoidmain(String[]args){
WeekDemo1wd=newWeekDemo1();
wd.doWhat(5);
wd.doWhat(10);
}
}
2.使用枚举
/**
*使用枚举:
枚举常量的定义和使用
*根据用户输入的周几这个数字,给出相应提示
*/
publicclassWeekDemo2{
/**
*做什么事情
*
*@paramweek
*/
publicvoiddoWhat(Weekweek){
switch(week){
caseMON:
caseTUE:
caseWED:
caseTHU:
caseFRI:
System.out.println("工作日,努力写代码!
");
break;
caseSAT:
System.out.println("星期六,休息!
看电影!
");
break;
caseSUN:
System.out.println("星期日,休息!
看电影!
");
break;
default:
System.out.println("地球上的一个星期就7天");
}
}
publicstaticvoidmain(String[]args){
WeekDemo2wd=newWeekDemo2();
wd.doWhat(Week.FRI);
}
}
//定义一周七天的枚举
publicenumWeek{
MON,TUE,WED,THU,FRI,SAT,SUN
}
1.4课堂练习
/**
*需求说明:
为学士后Java课程三个单元定义枚举:
U1、U2、U3,分别表示第一、二、三单元
编程输出每个单元的学习目标
*/
publicclassTestEnum{
publicvoidshow(Unitunit){
switch(unit){
caseU1:
System.out.println("第一单元打基础");
break;
caseU2:
System.out.println("第二单元可以胜任Java程序开发");
break;
caseU3:
System.out.println("第三单元可以胜任企业级Java开发");
break;
default:
System.out.println("输入有错");
}
}
publicstaticvoidmain(String[]args){
TestEnumt=newTestEnum();
t.show(Unit.U1);
Unitu=Unit.U2;
t.show(u);
t.show(Unit.U3);
}
}
/**
*学士后Java课程三个单元定义枚举:
U1、U2、U3
*/
publicenumUnit{
U1,U2,U3
}
2、包装类
2.1包装类简介
1.包装类把基本类型数据转换对象:
每个基本类型在java.lang包中都有相应的包装类
2.包装类有何作用
1)提供了一系列实用的方法
2)集合不允许存放基本数据类型数据,存放数字时,要用包装类型
2.2包装类的构造方法
1.理论部分
1)所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
publicType(typevalue)如:
Integeri=newInteger
(1);
2)除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
publicType(Stringvalue)如:
Integeri=newInteger("123");
3)注意:
a)Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
b)当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
2.演示案例
publicclassDemo1{
publicstaticvoidmain(String[]args){
//包装类实例构造
//1.所有包装类:
都可将与之对应的基本数据类型作为参数,来构造它们的实例
Integeri=newInteger(34);
Doubled=newDouble(98.7);
Booleanb=newBoolean(true);
Characterc=newCharacter('a');
System.out.println(i+"\t"+d+"\t"+b+"\t"+c);
//2.除Character类外,其他包装类可以一个字符串为参数构造它们的实例
//编译错误
//Characterc2=newCharacter("a");
Integeri2=newInteger("34");
Doubled2=newDouble("98.7");
Booleanb2=newBoolean("true");
System.out.println(i2+"\t"+d2+"\t"+b2);
//3.Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
Booleanb3=newBoolean("TRue");
Booleanb4=newBoolean("false");
Booleanb5=newBoolean("love");
System.out.println(b3+"\t"+b4+"\t"+b5);
//4.当包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
Integeri3=newInteger(null);
Doubled4=newDouble("包装类");
System.out.println(i3+"\t"+d4);
}
}
2.3包装类的常用方法
1.方法集锦
1)XXXValue():
包装类转换成基本类型
2)toString():
以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
3)parseXXX():
把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
4)valueOf():
(1)所有包装类都有如下方法(基本类型->包装类)
publicstatic TypevalueOf(typevalue)如:
IntegerintValue=Integer.valueOf(21);
(2)除Character类外,其他包装类都有如下方法(字符串->包装类)
publicstatic TypevalueOf(String s)如:
IntegerintValue=Integer.valueOf("21");
2.演示案例
//包装类常用方法
publicclassDemo2{
publicstaticvoidmain(String[]args){
//1.XXXValue():
包装类转换成基本类型
IntegerintegerId=newInteger(25);
intintId=integerId.intValue();
System.out.println(intId);
BooleanbooleanVal=newBoolean(true);
booleanbool2=booleanVal.booleanValue();
System.out.println(bool2);
System.out.println("*************************");
//2.toString():
以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
Stringsex=Character.toString('男');
Stringid=Integer.toString(89);
System.out.println(sex);
System.out.println(id);
Stringsex2='男'+"";
Stringid2=89+"";
System.out.println(sex2);
System.out.println(id2);
System.out.println("*************************");
//3.parseXXX():
把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
inti=Integer.parseInt("89");
System.out.println(i);
//booleanflag=Boolean.parseBoolean("true");
//booleanflag=Boolean.parseBoolean("TRue");
//booleanflag=Boolean.parseBoolean("love");
booleanflag=Boolean.parseBoolean("false");
System.out.println(flag);
System.out.println("*************************");
//4.valueOf:
所有包装类valueOf(typevalue)
IntegerintValue=Integer.valueOf(21);
System.out.println(intValue);
Booleanbool=Boolean.valueOf(false);
System.out.println(bool);
System.out.println("*************************");
//除Character类外,其他包装类都有如下方法(字符串->包装类)
intValue=Integer.valueOf("32");
//bool=Boolean.valueOf("true");
bool=Boolean.valueOf("love");
//编译错误
//Characterc=Character.valueOf("a");
System.out.println(intValue);
System.out.println(bool);
System.out.println("*************************");
//5.基本类型和包装类的自动转换:
装箱和拆箱
//装箱
IntegerintObject=5;
//拆箱
intintValue2=intObject;
System.out.println(intObject+"\t"+intValue2);
}
}
2.4装箱和拆箱
自动装箱:
指开发人员可以把一个基本数据类型直接赋给对应的包装类。
自动拆箱:
指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。
典型应用:
Listlist=newArrayList();
list.add
(1);
//list.add(newInteger
(1));
inti=list.get(0);
//intj=(Integer)list.get(0);
2.5包装类的特点
1.JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
2.包装类并不是用来取代基本数据类型的:
在基本数据类型需要用对象表示时使用
3、Math
3.1Math类简介
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。
abs绝对值
acos,asin,atan,cos,sin,tan三角函数
sqrt平方根
pow(doublea,dobleb)a的b次幂
log自然对数
expe为底指数
max(doublea,doubleb)
min(doublea,doubleb)
random()返回0.0到1.0的随机数
longround(doublea)double型数据a转换为long型(四舍五入)
toDegrees(doubleangrad)弧度—>角度
toRadians(doubleangdeg)角度—>弧度
3.2演示案例
/**
*幸运抽奖:
会员号的百位数与系统随机数相同,即为中奖
*/
publicclassGoodLuck{
publicstaticvoidmain(String[]args){
//随机产生一个0-9之间的任意整数
intrandom=(int)(Math.random()*10);
//System.out.println(random);
//从控制台接收一个任意的四位数
System.out.println("我行我素购物管理系统->幸运抽奖\n");
System.out.print("请输入4位会员号:
");
Scannerinput=newScanner(System.in);
intcustNo=input.nextInt();
//获得会员号的百位数
intbaiwei=custNo/100%10;
if(baiwei==random){
System.out.println(custNo+"是幸运客户,获得精美MP3一个。
");
}else{
System.out.println(custNo+"谢谢您的支持!
");
}
}
}
4、Random
1.生成随机数的另一种方式
2.用同一个种子值来初始化两个Random对象,然后用每个对象调用相同的方法,得到的随机数也是相同的
publicclassRandomDemo{
publicstaticvoidmain(String[]args){
Randomrand=newRandom();//创建一个Random对象
for(inti=0;i<20;i++){//随机生成20个随机整数,并显示
intnum=rand.nextInt(10);//返回下一个伪随机数,整型的
System.out.println("第"+(i+1)+"个随机数是:
"+num);
}
}
}
5、String
5.1创建对象的两种方式
String类描述的是文本字符串序列。
留言QQ写日志。
创建String类的对象的两种方式:
1.""直接赋值法,如Strings="HelloWorld";
a)直接在常量池中创建,栈内存的s变量指向常量池
2.new关键字法,如Strings=newString("HelloWorld");
a)栈内存s指向堆内存对象,堆内存再指向常量池
5.2String特性
1.String是一个final类,代表不可变的字符序列
2.字符串是不可变的。
一个字符串对象一旦被配置,其内容是不可变的。
5.3字符串常用方法
获取方法
intlength()获取字符串的长度
charcharAt(intindex)获取特定位置的字符(角标越界)
intindexOf(Stringstr)获取特定字符的位置(overload)
intlastIndexOf(intch)获取最后一个字符的位置
判断方法
boolean
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实用