目录
1.java基本数据类型的转换
默认转换:容量小的类型默认转换成容量大的类型;byte,short,char-->int-->long-->float-->double;
byte,short,char他们三者之间不能相互转换,计算时会转换成int类型;
强制转换: 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出。
boolean类型不能与其他七种类型进行转换;
再进行混合运算时,都会转换成容量最大的数据类型;
/*
基本数据类型之间转换
byte 1 short 2 int 4 long 8
float 4 double 8
char 2 虽然是字符,但是实际是unicode编码中的一个十进制整数 可以把他当做整数来对待
boolean 不能和其他其中类型进行转换 true false
转换规则
容量小的转容量大的
byte 1字节 127 -- short 2字节
容量大得转容量小的
int 4字节 129 --- byte 1字节
float是4字节,但是由于小数的二进制存储与整数二进制存储结构不同,
4字节的float大于4字节的int,大于8字节的long
byte->short->char->int->long->float->double
*/
public static void main(String[] args) {
//容量小的转容量大的 可以直接进行转换
byte a = 127;
int b = a;
long c = b;
float d = c;
//容量大得转容量小的
//大转小: 出现溢出
int m = 658;
byte n = (byte)m; //int --> byte 编译器不能通过
System.out.println(n);
float x = 10.5f;
//大转小: 精度损失
long y = (long)x;
System.out.println(y);
char z = 'a'; //97 char也是可以参与转换的
int zc = z;
byte aa = 10;
byte bb = 10;
byte cc = (byte)(aa+bb);//byte short,char 在混合运算时,都是上升为int类型
double dd = x + m + a + 5.5; //混合运算时,小类型默认都会转为最大的类型
}
2.条件语句
if语句
if(条件表达式){ 代码块 }
if(条件表达式){ 代码块 }else{ 代码块 }
if(条件表达式){ }else if(条件表达式)...else if(条件表达式){ }else{ }
public static void main(String[] args) {
int a = 10;
//语法支持 一行代码时,可以不用写{ }
if(a<5)
System.out.println("a>5");
System.out.println("a>5");//此行代码是不在if控制范围内的,需要注意
}
switch语句
switch 与 if 语句比较类似, switch能够实现的功能,if语句都能实现
switch一般用于选择一些固定的选项,如一周有7天,一年有四季...
switch(表达式) 表达式的值只能是byte short char int 枚举 String类型
case后面只能是字面量,不能重复;
在case代码块中使用break语句终止流程,如果没有添加break,那么程序将会继续向下执行后面的case
public static void main(String[] args) {
/*
int a = 2;
switch(表达式 a){
case 字面量值 1 :
case对应的代码块
[break];可选的
case 2 :
case对应的代码块
.....
default:
默认代码块
}
*/
String a = "5";
// int b = 1;
switch (a){
case "1" :
System.out.println("case1");
break;
case "2":
System.out.println("case2");
break;
case "3":
System.out.println("case3");
break;
default:
System.out.println("输入的内容不合法");
}
}
3.循环
for循环
为了循环已知次数的情况,使用for循环
for(int i=0;i<10;i++){
循环体
}
for循环用于已知次数
for(变量的定义,只执行一次;进入循环的条件多次执行;变量的更新,多次执行){
循环体(多次执行)
}
public static void main(String[] args) {
for(int i=0;i<10;i++){
System.out.println("i="+i);
}
int i=0;
for(;i<10;i++){
System.out.println(i);
}
int i=0;
for(;i<10;){
System.out.println(i);
i++;
}
for(;;){
System.out.println("aaaa");
}//死循环
}
while循环和do while循环
public static void main(String[] args) {
while(true){
}//死循环
int a = 1;
while(a<10){
System.out.println(a);
a++;
}
System.out.println("a="+a);
char c = ' ';
do{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个小写字母");
c = scanner.next().charAt(0);// charAt(0) 获取字符串的第0个位置的字符
}while('a'<=c&&c<='z');
}
public static void main(String[] args) {
/*
*****
*****
*****
*****
*****
*/
for (int i=0;i<5;i++){//外层循环,控制行数 外层循环执行一次
for(int j=0;j<5;j++){//内层循环 内层循环需要执行5次
System.out.print("*"); //println()会自动换行 print()不会自动换行
}
System.out.println();//换行
}
/*
*
**
***
****
*/
for(int i=1;i<=9;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println();
}
//outer 是为外层循环定义一个标签,标签名字可以自定义
outer:for (int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(j==3){
break outer;//在内层循环中,使用break语句,只能终止当前所在的循环,默认不能终止上一层循环
// break 某层循环的标签名
}
System.out.println("j="+j);
}
System.out.println("i="+i);
}
}