JAVA基础03
一、类型转换
1.整型之间的类型转换
整型:byte、short、int、long
public class Test{
public static void mian(String[] args){
byte b = 125;
short s = b; //byte类型的数据可以直接自动转换为short
short s1 = 128;
int i = s1;//short类型的数据可以直接自动转换为int
int i1 = 100;
long l = i1;//int类型的数据可以直接自动转换为long
long l = 100;
int i2 = (int)l;//long类型不能直接转换为int类型,必须使用强制转换
int i3 = 128;
short s2 = (short)i3;//int类型不能直接转换为short类型,必须使用强制转换
short s3 = 100;
byte b2= (byte)s3;//int类型不能直接转换为short类型,必须使用强制转换
}
}
总结:Java基本数据类型之间可以根据数据类型的大小(所占字节长度)进行由大到小的自动转换;byte<short<int<long,由大数据类型向小数据类型的转换必须使用到强制类型转换,但是在强制类型转换的过程中会出现精度丢失的情况,使用时请注意。
2.浮点型之间的转换与浮点型与整型之间的转换
浮点型:float、double
public class Test_01{
public static void main(String[] args){
long l = 100;
float f = l;//long类型的数据可以直接自动转换为flaot
float f1 = 200;
double d = f1;//float类型的数据可以直接自动转换为double
double d1 = 199;
float f1 = (float)d1;//double类型不能直接转换为float类型,必须使用强制转换
float f2 = 288;
long l1 = (long)f2;//float类型不能直接转换为long类型,必须使用强制转换
}
}
总结:整形数据可以与浮点型数据之间进行相互转换,且遵守由小转大自动转换,由大到小需要强制类型转换的原则。由1.2两段代码我们可以总结出:
byte<short<int<long<float<double
3.字符型与整型的转换
字符型:char
public class Test_02{
public static void main(String[] args){
char c = 'a';
byte b = (byte)c;//char类型不能直接转换为byte类型,必须使用强制转换
short s = (short)c;//char类型不能直接转换为short类型,必须使用强制转换
int i = c;//byte类型的数据可以直接自动转换为char
byte b1 = 65;
short s1 = 65;
char c1 = (char)b1;//char类型不能直接转换为byte类型,必须使用强制转换
char c2 = (char)s1;//char类型不能直接转换为short类型,必须使用强制转换
}
}
总结:char类型的数据不能够直接与byte、short类型的数据进行转换;必须使用强制类型转换,反之亦然;char类型的数据与int类型的数据的相互转换遵循大小原则。
二、变量
1.变量的定义
变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),Java中每个变量必须先声明/先初始化,后使用, 该区域的数据可以在同一类型范围内不断变化。 程序运行过程中它的值是允许改变的量。
ps:(变量可以理解理解为装某种类型数据的容器,容器可以重复使用)
2.Java中定义变量的语法
定义:int i;或者 int a,b,c;
赋值:i = 1;
初始化:int l = 1;或者 int k = 1,j = 2,h = 3;
三、运算符
运算符可以分为算数运算符和逻辑运算符
1.算数运算符
算数运算符有+、-、*、/、%(取模)
自增自减运算符(++、–)
++在前(++a)先运算后赋值
++在后(a++)先赋值后运算
还有一个比较重要的是位运算
<< :左移,例如:5<<2
左移一位,代表这个数乘以2,
右移同理,代表这个数除以2.
2.逻辑运算符
逻辑运算符有& | && || ^ !
注意区分 & 和 && 以及 | 和 || 的区别就可以了
&(与)&&(短路与)的区别在于在Java判断语句中&&(短路与)if(true&&false)只会判断前一个条件是否为false,如果为false那么将不再判断第二个条件,直接返回false,只有当第一个条件为true的时候才会判断第二个条件
|(与)||(短路与),同理,在判断第一个条件为true的情况下直接返回true,否则才会判断第二个条件。
3.三目运算符
表达式1?表达式2:表达式3
如果表达式1成立(返回true)则执行表达式2,否则执行表达式3
四、选择分支
选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
选择判断有3种形式:
1.if(判断条件){
执行语句;
}
- if(判断条件){
执行语句;
}else if(判断条件){
执行语句;
}else if(判断条件){
执行语句;
}
3.if(判断条件){
执行语句;
}else if(判断条件){
执行语句;
}…else if(判断条件){
执行语句;
}else{
执行条件;
}
switch:
switch(key){
case v1:
执行语句;
break;
case v2:
执行语句;
break;
…
default:
执行语句;
break;
}
注意:从Java7过后switch的key仅仅支持:byte、short、char、int、String、enum
五、循环
A
while(B){
C
}
while的执行顺序:A–>B–>C;B–>C;直到B不满足条件
A
do{
B
}while(C)
do……while的执行顺序:A–>B–>C;B–>C
while循环,当条件不满足时可能一次都不会执行,但是do…while至少会执行一次。
注意:
for(A;B;C){
D
}
for循环的执行顺序:A–>B–>D–>C;B–>D–>C
六、流程控制
break:结束本层循环,直接进入下一层循环。
continue:结束本层的本次循环,直接进入本层的下一次循环。
continue、break都可以使用循环标识来指定某一层循环
public class Test{
public static void main(String[] srgs){
logo:for(int i = 0; i<=2;i++){
for(int j = 0; j<=2;j++){
System.out.print("i="+i+"j="+j);
break logo;
continue logo;
}
}
}
}