1、实用类:
9个实用类:
1.1 枚举什么时候会用到?
枚举是一个类型;
public enum 枚举名{//定义枚举类
}
定义枚举可以new一个文件;也可以定义在实用枚举的类里面,
如:
package com.example.test;
import com.example.test.Student1.Xingbie;
public class TestStu {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student1 stu=new Student1();
stu.sex=Xingbie.女;
System.out.println(stu.sex);
}
}
package com.example.test;
public class Student1 {
public enum Xingbie{
男,
女
}
public Xingbie sex;
}
运行结果为:
package com.example.test;
//import com.example.test.Student1.Xingbie;
public class TestStu {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student1 stu=new Student1();
stu.sex=Genders.女;
System.out.println(stu.sex);
}
}
package com.example.test;
public enum Genders {
男,
女
}
package com.example.test;
public class Student1 {
// public enum Xingbie{
// 男,
// 女
// }
public Genders sex;
}
枚举类定义在实用的类里面和new一个新的文件的区别:
枚举类作用域不一样;枚举类定义在实用的类里面,只能依附的类用,其他类用得import;new一个新的文件,别的类都可以用。
枚举类型优点:类型安全;易于输入;代码清晰;
需求,修改,用枚举:
解:
package com.example.test;
public class WeekDemo {
public void doWhat(WeekEnum day) {//枚举约束掉值的范围了。
switch(day) {
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("工作日,努力写代码!");
break;
case SAT:
System.out.println("星期六,休息!看电影!");
break;
case SUN:
System.out.println("星期日,休息!看电影!");
}
}
public static void main(String[] args) {
WeekDemo wd=new WeekDemo();
wd.doWhat(WeekEnum.SUN);
}
}
面试题:写出你都用过那些异常
写出你用过那些包那些类
1.2、java.lang.Math类
Math.random()生成0.0<=值<1.0的随机数
package com.example.orient;
public class LuckyDog {
public static void main(String[] args) {
// TODO Auto-generated method stub
//会员卡号 百位=随机数 <==中奖规则
int custNo=9876;
int baiWei= custNo/100%10;
int suiJi=(int)(Math.random()*10);
System.out.println(suiJi);
if(baiWei==suiJi) {
System.out.println("I'm a lucky dog!");
}
else {
System.out.println("未中奖");
}
}
}
1.3、java.util.Random
是一个类,通过一个种子,某一个算法生成随机数。
两步使用:Random random=new Random();
random.nextInt(maxNum);//不可能超过maxNum
情况一:
package com.example.orient;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random random = new Random();
for(int i=1;i<=10;i++) {
int a=random.nextInt(10);
System.out.println("第"+i+"个随机数:"+a);
}
}
}
情况二:
代码验证如下:
package com.example.orient;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*Random random = new Random();
for(int i=1;i<=10;i++) {
int a=random.nextInt(10);
System.out.println("第"+i+"个随机数:"+a);
}*/
//两个种子生成器生成随机数
Random random1=new Random(9);
Random random2=new Random(9);
//随机生成一个整数
System.out.println(random1.nextInt());
System.out.println(random2.nextInt());
}
}
运行结果:
总结:用种子构造器生成随机数,种子相同的两个随机对象,生成的随机数一定相同。
情况三:
package com.example.orient;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*Random random = new Random();
for(int i=1;i<=10;i++) {
int a=random.nextInt(10);
System.out.println("第"+i+"个随机数:"+a);
}*/
//两个种子生成器生成随机数
Random random1=new Random();
Random random2=new Random();
//随机生成一个整数
System.out.println(random1.nextInt());
System.out.println(random2.nextInt());
}
}
运行结果为:
总结:若不写种子,则默认是有一个种子的,可能以当前时间的毫秒数来作为种子传进去的。所以种子是时时刻刻是变化的,所以说没运行一次两个随机数都不一样,各自变化也不一样。
问题:
如果你想随机数越随机,则种子变化越大随机数越随机。种子越随机生成的随机数越随机!尽量使用变化比较大的种子(时间的毫秒)
1.4、包装类:
基本数据类型:int double float char boolean byte
引用数据类型:(有方法有属性的)
比如包装类:Integer Double Float Character Boolean Byte
即:Boolean Number Character
集合:List list=new ArrayList();
list.add();//添加元素,只能add是object值;
集合只能装Object类型的,为了能装基本数据类型,java都给其包装成引用类型;
包装类的装箱:基本数据类型转换为包装类的对象;
拆箱:包装类对象转换为基本类型的值;
package com.example.orient;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=9;
Integer i1=8;//装箱操作
//i=i1;//拆箱操作
Integer i2=new Integer(i);//包装类的构造方法
System.out.println(i2);
boolean b=false;
Boolean b1=new Boolean(b);
System.out.println(b1);
char c='a';
Character ch=new Character(c);
System.out.println(ch);
int t=8;
Integer t1=new Integer("123");
System.out.println(t1);
//Number类型,传参必须能正确转换为相应数值,否则会NumberFormatException
/*Integer t2=new Integer("北京");//编译没错,但运行就会有错
System.out.println(t2);*/
//Boolean 类型,传参只要不是true(包括大小写),全部都是false
Boolean bt3=new Boolean("TRUE");
Boolean bt=new Boolean("True");
Boolean bt1=new Boolean("false");
Boolean bt2=new Boolean("1");
System.out.println(bt);
System.out.println(bt1);
System.out.println(bt2);
System.out.println(bt3);
/*//Character没有String 做参数的构造方法。
Character ch1=new Character("ng");
System.out.println(ch1);*/
//参数不能为null
/*Integer ad=new Integer(null);
System.out.println(ad);*/
}
}
运行结果: