变量--可以为是一个程序执行的最小单位
变量的格式:数据类型 变量名称=初始值;
1.基本数据类型的转换
1.boolean不参与基本数据类型转换的。
2.基本数据类型精度的排序
byte short char int long float double
3.隐式数据类型转换【自动数据类型转换】
数据类型精度低的转换成数据类型精度高的过程就是隐式数据类型的转换
低---->高 隐式数据类型转换【自动数据类型转换】
4..显式数据类型转换【强制数据类型转换】
数据类型精度高的转换成数据类型精度低的过程就是显式数据类型的转换
高---->低 显式数据类型转换【强制数据类型转换】
格式:低类型 变量名称=(低)高[值/变量]
例如:
public class DataType{
public static void main (String args[]){
//低---->高 隐式数据类型转换【自动数据类型转换】
int numint1=100;//整数类型的变量占4个字节
double numdou1=numint1;//int被隐式转换成double
double numdou2=45;//整数常量默认是int
System.out.println("numdou1=="+numdou1+",numdou2=="+numdou2);
//高--->低 显式数据类型转换【强制数据类型转换】
//小数常量默认为double
//格式: 低类型 变量名称 = (低类型)高[值/变量];
//double/float--->int
double dounum3=12.5;
int intnum1=(int)dounum3;
int intnum2=(int)28.3f;
System.out.println("intnum1=="+intnum1+",intnum1=="+intnum1);
//char与int转换
//char--->int 隐式数据类型转换【自动数据类型转换】
char cha1='家';
int intnum3=cha1;
System.out.println("intnum3=="+intnum3);
//int--->char 显式数据类型转换【强制数据类型转换】
int intnum4=23457;
char cha2=(char)intnum4;
System.out.println("cha2=="+cha2);
//byte转换成int---隐式数据类型转换【自动数据类型转换】
byte bytenum1=120;
int intnum5=bytenum1;
System.out.println("intnum5=="+intnum5);
//int转换成byte---显式数据类型转换【强制数据类型转换】
int intnum6=129;
byte bytenum2=(byte)intnum6;
System.out.println("bytenum2=="+bytenum2);
int intnum7=-130;
byte bytenum3=(byte)intnum7;
System.out.println("bytenum3=="+bytenum3);
}
}
5.int转换成byte
byte转换成int----隐式数据类型转换【自动数据类型转换】
int转换成byte----显式数据类型转换【强制数据类型转换】
1.当整数int转换成byte时,int取值正数超过byte范围以后,会从byte最小值向前推进
2.当整数int转换成byte时,int取值负数超过byte范围以后,会从byte最大值向后推进
如下图所示:
2. java中的运算符
1.赋值运算符 =
2.算术运算符 【+ - * / %{求余} ++{自动加1} --{自动减1} 】
3.比较运算符 【> < >= <= == !=】
4.逻辑运算符 【|| && ! {位运算符 | & ! ~ ^ >> << }
5.{位运算符 | & ! ~ ^ >> << }
位运算符需要将数据转换成2进制【00101010】数据进行运算
掌握10进制转2进制 :短除法[笨] 8421码转化法
1024 512 256 128 64 32 16 8 4 2 1
7=4+2+1— 0 0 0 0 0 0 0 0 1 1 1---- 00000111
13=8+4+1— 0 0 0 0 0 0 0 1 1 0 1---- 00001101
负数的二进制:实质上用补码表示【正数的补码是本身】【负数的补码是反码+1】
反码的表示方法是:正数的反码是其本身【原码】
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
原码就是符号位加上真值的绝对值,即用第一位表示符号, 其余位表示值
-7--7的2进制--00000111--[-7的源码]10000111---[-7的反码]11111000--[-7的补码]11111001
| 按位或---相同位只要一个为1即1。【7 | -7】 【01--1 10--1 11-1】,如下所示:
00000111
11111001
11111111
& 按位与---相同位相同为1,不同为0。【7 & -7】 【11--1 00--1 01-0 10-0】,如下所示:
00000111
11111001
00000001
^ 按位异或---相同位相同为0,不同为1。【7 ^ -7】 【01--1 10--1 11--0 00--0】,如下所示:
00000111
11111001
11111110
~取反 0和1全部取反
<<左位移 2进制整体向左移动指定位数
>>右位移 2进制整体向右移动指定位数
6.三元运算符【(判断)? 数据值1:数据值2】
先判断,判断结果为true,整运算表达式的结果取数据值1
判断结果为false,整运算表达式的结果取数据值2
例如:
System.out.println(num1+"%"+num2+"="+(num1%num2));
//++{自动加1}
//变量++【先用后加1】
System.out.println(num2++); //12
System.out.println(num2); //13
//++变量【先加1后用】
//System.out.println(++num1); //21
//System.out.println(num1); //21
//变量--{自动减1}
//变量++【先用后减1】
//System.out.println(num1--); //20
//System.out.println(num1); //19
//--变量【先减1再用】
System.out.println(--num1); //19
System.out.println(num1); //19
//比较运算符【> < >= <= != 】运算结果为boolean
int a=15;
int b=20;
System.out.println(a+">"+b+"=="+(a>b)); //false
System.out.println(a+"<"+b+"=="+(a<b)); //true
System.out.println(a+">="+b+"=="+(a>=b)); //false
System.out.println(a+"<="+b+"=="+(a<=b)); //true
System.out.println(a+"!="+b+"=="+(a!=b)); //true
System.out.println(a+"=="+b+"=="+(a==b)); //false
//4.逻辑运算符 【|| && ! 】使用逻辑运算符的数据是boolean值
//[短路或]|| 运算符号的左边结果为true时,右边不需要计算,结果为true
System.out.println((a<b) || (7/0)>1);//true
//[短路与]&& 运算符号的左边结果为false时,右边不需要计算,结果为false
System.out.println((a>b) && (7/0)>1);
// [! 求反]
System.out.println(!(a>b));
//位运算符 | & ! ~ ^ >> <<
System.out.println(7 | -7);//-1
System.out.println(7 & -7);//1
System.out.println(7 ^ -7);//-2
System.out.println(7 >>2);//1
System.out.println(7 << 2);//28
//(判断)? 数据值1 :数据值2 [2选1]
char cha1=(a<b)? 'T':'F';
System.out.println("cha1=="+cha1); //T
}
}
3.java中的语句
1.顺序结构 【写好的代码从上往下一行一行的逐个执行】
2.选择结构【if语句 switch语句】
例如:if语句
public class IfSentence{
public static void main(String args[]){
//if(判断条件){java代码} 【只选对的】
//先执行判断,true时执行{java代码},false时不执行
int num1=70;
if(num1>=60){
System.out.println("及格");
}
//if(判断条件){java代码1}else{Java代码2}
//先执行判断,true时{Java代码1},false时执行{Java代码2}
int num2=59;
if(num2>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
//if(判断条件1){Java代码1}else if(判断条件2){Java代码2}......else{Java代码3}
//先执行判断1为true时执行{java代码1},判断1为false时判断条件2,判断2位true时执行{Java代码2},所有条件都为false时执行{Java代码3}
int num3=70;
if(num3>=60 && num3<79){
System.out.println("及格");
}else if(num3>=80 && num3<90){
System.out.println("良好");
}else if(num3>=90 && num3<=100){
System.out.println("优秀");
}else{
System.out.println("不及格/成绩有误");
}
/* if(判断1){
if(判断2){
java代码1
}else{
java代码2
}
}else{
if(判断3){
java代码3
}else{
java代码4
}
} */
//if语句的嵌套
//判断1位true时执行判断2,判断2为true时执行Java代码1,判断2为false时执行java代码2
//判断1为false时执行判断3,判断2为true时执行java代码3,判断3为false时执行Java代码4
int num4=90;
if(num4>=60){
if(num4>=80){
System.out.println("优秀");
}else{
System.out.println("良好");
}
}else{
if( num4>=0){
System.out.println("不及格");
}else{
System.out.println("成绩有误");
}
}
}
}
例如:switch语句
public class SwitchSentence{
public static void main(String args[]){
//switch语句
/*
switch(表达式){
case 常量值1: java代码1;[break;]
case 常量值2: java代码2;[break;]
case 常量值3: java代码3;[break;]
......
case 常量值n: java代码n;[break;]
default:java代码;[break;]
}
先执行表达式,表达式的结果与case后面的常量值匹配,
如果匹配结果相等,执行对应case后面的java代码,
如果有break就结束switch语句的执行。
如果没有break,那么执行下一个case对应的java代码,直到有break,结束
表达式的结果与所有case后面的常量值都不匹配,那么执行default后面的代码
注意1:表达式的类型可以是byte short char int long String[jdk8.0],枚举
注意2:有没有break,有break就结束执行,
没有break执行下一个case对应的java代码,直到有break*/
int num1=20;
int num2=9;
char ch='+';
switch(ch){
case '+':System.out.println(num1+"+"+num2+"="+(num1+num2));
case '-':System.out.println(num1+"-"+num2+"="+(num1-num2));break;
case '*':System.out.println(num1+"*"+num2+"="+(num1*num2));
case '/':System.out.println(num1+"/"+num2+"="+(num1/num2));
default:System.out.println("运算有误!");
}
}