一、分析基本数据类型的特点,最大值和最小值。
1、
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
2、
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
3、
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
1个字节是8位
只有8种基本类型可以算.其他引用类型都是由java虚拟机决定的自己不能操作
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
char 2字节
boolean 1字节
1)自动类型转:小到大
强制类型转:大到小 (要转换成为的类型)变量
强转有可能溢出或丢失精度
2)short s1 = 5;
short s2 = 8;
short s3 = (short)(s1+s2);
1)算术运算符:+,-,*,/,%,++,--
2)关系运算符:>,<,>=,<=,==,!= boolean
3)逻辑运算符:&&,||,! boolean
4)赋值运算符:=,+=,-=,*=,/=,%=
5)字符串连接运算符:+
6)条件/三目运算符:boolean?数1:数2
1)if:1条路
2)if...else:2条路
3)if...else if结构:多条路
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scan.nextInt();
if(score<0 || score>100){
System.out.println("成绩不合法");
}else if(score>=90){ //score>=0 && score<=100
System.out.println("A-优秀");
}else if(score>=80){
System.out.println("B-良好");
}else if(score>=60){
System.out.println("C-中等");
}else{
System.out.println("D-不及格");
}
4)switch...case结构:多条路
优点:效率高、结构清晰
缺点:整数、相等
break:跳出switch
Scanner scan = new Scanner(System.in);
System.out.println("请选择功能:1.显示全部记录 2.查询登录记录 0.退出");
int command = scan.nextInt();
switch(command){
case 1:
System.out.println("显示全部记录");
break;
case 2:
System.out.println("查询登录记录");
break;
case 0:
System.out.println("下次再来吧!");
break;
default:
System.out.println("输入错误");
}
1)反复执行一段相同或相似的代码
2)循环三要素:
2.1)循环变量的初始化
2.2)循环的条件(以循环变量为基础)
2.3)循环变量的改变(向着循环的结束变)
循环变量:在循环过程中所反复改变的那个数
3)循环结构:
3.1)while:先判断后执行,有可能一次都不执行
int times=0; //1.循环变量的初始化
while(times<10){ //2.循环的条件
System.out.println("行动是成功的阶梯");
times++; //3.循环变量的改变
}
3.2)do...while:先执行后判断,至少执行一次
要素1与要素3相同时,首选do...while
3.3)for循环
//累加1到100的和,跳过个位为3的
int sum = 0; //和
for(int num=1;num<=100;num++){
if(num%10==3){
continue; //跳过循环体中剩余语句而进入下一次循环
}
sum += num;
}
System.out.println("sum="+sum);
循环的比较:
1.for循环:应用率最高、固定次数循环
2.break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
3.三种循环结构的更佳适用情况:
1)while:"当..."
要素1与要素3不同时选while
2)do...while:"直到..."
要素1与要素3相同时首选do...while
3)for:固定次数循环,应用率最高
4.嵌套循环:
1)循环中套循环,一般多行多列时使用,外层控制行,内层控制列
2)执行规则:外层循环走一次,内层循环走所有次
3)建议:循环层数越少越好,能用一层就不用两层,能用两层就不用三层
若需要必须通过三层以上的循环来解决,说明设计有问题
4)break只能跳出一层循环
5.程序=算法+数据结构:
1)算法:解决问题的流程/步骤(顺序、分支、循环)
2)数据结构:将数据按照某种特定的结构来保存
数怎么存
设计良好的/合理的数据结构会导致好的算法
1)相同数据类型元素的集合
2)是一种数据类型(引用类型)
3)数组的定义:
int[] arr = new int[10];
4)数组的初始化:
int[] arr = new int[4]; //0,0,0,0
int[] arr = {1,4,5,8}; //1,4,5,8
int[] arr = new int[]{1,4,5,8}; //1,4,5,8
int[] arr;
arr = {1,4,5,8}; //编译错误,此方式只能声明同时初始化
arr = new int[]{1,4,5,8}; //正确
5)数组的访问:
5.1)通过(数组名.length)可以获取数组的长度
int[] arr = new int[8];
System.out.println(arr.length); //8
5.2)通过下标/索引来访问数组中的元素
下标从0开始,最大到(数组的长度-1)
int[] arr = new int[3];
arr[0] = 100; //给arr中的第1个元素赋值为100
arr[1] = 200; //给arr中的第2个元素赋值为200
arr[2] = 300; //给arr中的第3个元素赋值为300
arr[3] = 400; //数组下标越界异常
System.out.println(arr[arr.length-1]); //输出最后一个元素的值
6)数组的遍历:
int[] arr = new int[10];
for(int i=0;i
数组的复制:参见另一篇博客:java语言复制数组的四种方法(https://blog.csdn.net/ClearLoveQ/article/details/85005264)
参见另一篇博客:Java的集合 (https://blog.csdn.net/ClearLoveQ/article/details/85007778)