public class BasisTest {
/**
* 封装类/包装类 : 把 基本数据类型转换成对象!
*
* 基本数据类型 包装类
* byte Byte
* short Short
* int Integer
* long Long
* float Float
* double Double
* char Character
* boolean Boolean
*
* 使用我们的封装类 ,就可以使用类中对应的方法
* 集合中在存储基本数据类型时!只能存放封装类!
*/
// 所有的封装类 都有将对应的基本数据类型作为参数的方法 来构造实例
@Test
public void test01() {
/**
* 除了Character来构造实例的时候,没有String类型的参数!
* Float有三个实例化构造方法 分别是 传递 double float String
*/
Byte a = new Byte((byte) 1);
Short s = new Short((short) 1);
Integer b = new Integer(5);
Long l = new Long(1);
Float f = new Float(2);
Double c = new Double(5);
// 上面的六个封装类都继承了Number
Boolean boolean1 = new Boolean(true);
Character character1 = new Character((char) 1);
Character character2 = new Character('1');
}
/**
* 六个封装类继承了Number
* 用String来构造实例的时候,String中存放的必须是数值类型的字符串
*/
@Test
public void test02() {
Byte a = new Byte("1");
Short s = new Short("1");
Integer b = new Integer("1");
Long l = new Long("1");
Float f = new Float("1");
Double c = new Double("1");
// 除了大小写的true 其它都返回false
Boolean boolean1 = new Boolean("");
System.out.println(boolean1);
// 编译报错 Character character1 = new Character("1");
}
@Test
public void test03() {
System.out.println(Integer.toBinaryString(28)); // 转换成2进制
System.out.println(Integer.toHexString(28)); // 转换成16进制
System.out.println(Integer.toOctalString(28)); // 转换成8进制
}
/**
* 六个封装类继承了Number,只要不是传递 字符串类型的数值
* 都会抛出NunberFormatException
*/
@Test
public void test04() {
// Integer integer = new Integer(null);
double a = 1;
System.out.println(a);
Double double1 = new Double(1);
System.out.println(double1);
}
/**
*
*除了Character,都有对应的parse的方法
*/
@Test
public void test05() {
Integer integer = new Integer(5);
//第一个参数是对应进制的写法
System.out.println(integer.parseInt("11011", 2));
/** String num = "27";
System.out.println(Integer.parseInt(num) + 1);
Double.parseDouble("20");
Byte.parseByte("1");
Short.parseShort("1");
System.out.println(1 + 1 + "2"); // 22
System.out.println("1" + (1 + 2)); // 13
*/
}
/**
* valueOf
* 把基本数据类型转换成对应的封装类
* 除了Character没有传递String类型的参数
*
* xxxValue
* 把xxx类型转换成xxx对应的基本数据类型
*/
@Test
public void test06() {
// 基本数据类型和对应封装类之间的转换 我们称之为 装箱和拆箱操作
int a = 5;
Integer integer = Integer.valueOf(a);
integer.intValue();
Double double1 = Double.valueOf(20);
double1.doubleValue();
Character character = Character.valueOf('a');
character.charValue();
}
@Test
public void test07() {
Integer a = new Integer(1);
Integer b = new Integer(1);
int c = 1;
System.out.println(a == b); // false 都是new出来的对象
System.out.println(a == c);
}
@Test
public void test08() {
/**
*底层默认执行了valueOf()
*如果值在 -128到127 之间 则不会new对象
*否则 会new出来新的对象
*/
Integer a = 128;
Integer b = 128;
System.out.println(a == b); // false
}
}
@Test
public void testMath() {
System.out.println("向上取值:" + Math.ceil(50.1));
System.out.println("向下取值:" + Math.floor(50.9));
System.out.println("绝对值:" + Math.abs(-50.9));
System.out.println("最大值:" + Math.max(50, 60));
System.out.println("最小值:" + Math.min(50, 60));
System.out.println("随机数:" + (int) (Math.random() * 10));
// 之前使用的Math.random() 其实是调用了Random.nextDouble();
}
@Test
public void testRandom() {
Random random = new Random();
for (int i = 0; i < 100; i++) {
// System.out.println(random.nextBoolean()); 随机boolean类型的值
// System.out.println(random.nextDouble()); 0-1之间
// System.out.println(random.nextInt()); int取值范围
System.out.println(random.nextInt(10)); // 参数的范围 但是不包含本身 参数必须大于0
}
}
//随机数
@Test
public void test12(){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个4位数字:");
String num=scanner.next();
//把String类型的num转换成int
int realNum=Integer.parseInt(num);
//获取百位
int bai=realNum/100%10;
Random random=new Random();
//定义一个标记
boolean flag=false;
for (int i = 1; i <=100; i++) {
int a= random.nextInt(10);
System.out.println("第"+i+"次的随机数:"+a);
if (a==bai) {
//找到了
flag=true;
break;
}
}
if (flag) {
System.out.println("中奖了");
}else {
System.out.println("下次努力...");
}
}
}