package com.itheima.arithmeticoperstor;
public class Enum {
//枚举
enum Size{SMALL,MEDIUM,LARGE};
//直接引用枚举值
Size s=Size.SMALL;
//通过字符串获取枚举值
Size t=Size.valueOf("SMALL");
//定义私有枚举类型并包含三个枚举常量
private enum MyEnum{
ONE,TWO,THREE
}
public static void main(String[] args) {
//循环遍历MyEnum枚举类型
//values() 是Java编译器为每个枚举类型自动生成的方法
//无需手动定义,所有枚举类型都自动拥有此方法
//常用于遍历枚举的所有可能值
for(MyEnum value:MyEnum.values()){
System.out.println(value);
}
}
}
枚举可以通过直接赋值和引用字符串来赋值
结论:
枚举类型是引用类型,对于枚举类型来说“==”和equals()的结果是等价的
package com.itheima.arithmeticoperstor;
public class TestDouble {
public static void main(String[] args) {
System.out.println("0.05+0.01="+(0.05+0.01));
System.out.println("1.0-0.42="+(1.0-0.42));
System.out.println("4.015100="+(4.015100));
System.out.println("123.3/100="+(123.3/100));
}
}
Double 类型的数值进行计算,其结果都是不精确的
核心矛盾:多数十进制小数无法转成有限位二进制小数
我们习惯的十进制小数(如 0.1、0.2),在转换为二进制小数时,会变成无限循环的二进制序列—— 而 Double 的尾数位只有 52 位,无法存储无限循环的二进制,只能通过 “舍入” 保留前 52 位有效数字,这就导致了存储时的精度丢失。
举个最经典的例子:0.1 的二进制表示十进制 0.1 转换为二进制时,结果是 0.00011001100110011...(“0011” 无限循环)。由于 Double 尾数位只能存 52 位,最终存储的是这个无限序列的 “近似值”(舍入后的 52 位二进制),对应的十进制值约为 0.10000000000000000555...—— 从存储的那一刻起,0.1 就已经不是 “精确的 0.1” 了。
同理:
0.2 的二进制是 0.001100110011...(无限循环),存储后也是近似值;
0.3、0.4、0.6、0.7 等绝大多数十进制小数,都存在类似问题。
package com.itheima.arithmeticoperstor;
public class TestDouble {
public static void main(String[] args) {
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
}
}
第一个开头为字符串,后面+的也都会是字符串,从左到右依次执行
第二个开头不是字符串,就是x+y,得到300后与后面字符串结合
注意String是一个类,不是基础语法类型
字符串转为浮点数
number1 = Double.parseDouble( firstNumber );
number2 = Double.parseDouble( secondNumber );
package com.itheima.arithmeticoperstor;
import java.util.Random;
import java.util.Scanner;
public class calculate {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random r=new Random();
int a=r.nextInt(100)+1;
int b=r.nextInt(100)+1;
char[]operator={'+','-','','/'};
char c=operator[r.nextInt(4)];
System.out.println(a+" "+c+" "+b);
int result=0;
switch(c)
{
case '+':
result=a+b;
break;
case '-':
result=a-b;
break;
case '':
result=a*b;
break;
case '/':
result=a/b;
break;
}
System.out.println(result);
}
}
package com.itheima.arithmeticoperstor;
import java.util.Random;
import java.util.Scanner;
public class calculate {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random r=new Random();
String characters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println("请输入验证码:");
StringBuilder code=new StringBuilder();
for(int i=0;i<6;i++)
{
int x= r.nextInt(characters.length());
code.append(characters.charAt(x));
}
String codeString=code.toString();
System.out.println(codeString);
}
}
//验证码
package com.itheima.arithmeticoperstor;
import java.util.Random;
import java.util.Scanner;
public class calculate {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random r=new Random();
String characters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println("请输入验证码:");
StringBuilder code=new StringBuilder();
for(int i=0;i<6;i++)
{
int x= r.nextInt(characters.length());
code.append(characters.charAt(x));
}
String codeString=code.toString();
System.out.println(codeString);
}
}