变量–可以为是一个程序执行的最小单位
变量的格式:数据类型 变量名称=初始值;
java中的数据类型
1.基本数据类型
byte , short, int, long ,float, double, char, boolean
2.复合数据类型
.基本数据类型的转换
.boolean不参与基本数据类型转换的。
2.基本数据类型精度的排序
byte , short ,char , int , long , float ,double
3.隐式数据类型转换【自动数据类型转换】
数据类型精度低的转换成数据类型精度高的这个过程就是隐式数据类型转换【自动数据类型转换】
低—》高 隐式数据类型转换【自动数据类型转换】
4.显式数据类型转换【强制数据类型转换】
数据类型精度高的转换成数据类型精度低的这个过程就是显式数据类型转换【强制数据类型转换】
高—》低 显式数据类型转换【强制数据类型转换】
格式: 低类型 变量名称 = (低)高[值/变量];
5.char与int
例如:
public class DataType{
public static void main(String args[]){
//byte short char int long float double
//低---》高 隐式数据类型转换【自动数据类型转换】
int numint1=100; //整数类型的变量 占4个字节
double numdou1=numint1; //int被隐式转换成double
double numdou2=123; //整数常量默认是int
System.out.println("numdou1=="+numdou1+",numdou2=="+numdou2);
//高---》低 显式数据类型转换【强制数据类型转换】
//小数常量默认是double
double dou1=12.5;
//int num1=dou1; //错误: 不兼容的类型: 从double转换到int可能会有损失
//格式: 低类型 变量名称 = (低类型)高[值/变量];
int intnum1 = (int)dou1;
int intnum2 = (int)23.8f;
System.out.println("intnum1 =="+intnum1+",intnum2=="+intnum2);
//char 与 int的转换
//char --》 int 【隐式数据类型转换【自动数据类型转换】】
char ch1='家';
int numtest1=ch1;
System.out.println("numtest1 =="+numtest1); //23478
//int -->char 显式数据类型转换【强制数据类型转换】
int numtest2=23478;
//格式: 低类型 变量名称 = (低类型)高[值/变量];
char ch2=(char)numtest2;
System.out.println("ch2=="+ch2);
//byte转换成int---隐式数据类型转换【自动数据类型转换】
byte bytenum1=120;
int intnumtest1=bytenum1;
System.out.println("intnumtest1=="+intnumtest1);
//int转换成byte---显式数据类型转换【强制数据类型转换】
//int intnumtest2=129;
//byte bytenum2=(byte)intnumtest2;
//System.out.println("bytenum2=="+bytenum2); //-127
int intnumtest2=-130;
byte bytenum2=(byte)intnumtest2;
System.out.println("bytenum2=="+bytenum2); //126
}
}
6.int转换成byte
byte转换成int—隐式数据类型转换【自动数据类型转换】
int转换成byte—显式数据类型转换【强制数据类型转换】
1.当整数int转换成byte时,int取值正数超过byte范围以后,会从byte最小值向前推进计算。
1.当整数int转换成byte时,int取值负数超过byte范围以后,会从byte最大值向后推进计算。
参考图片1.png
2.java中的运算符
1.赋值运算符 =
2.算术运算符 【+ - * / %{求余} ++{自动加1} --{自动减1} 】
3.比较运算符 【> < >= <= == !=】
4.逻辑运算符 【|| && ! {位运算符 | & ! ~ ^ >> << }】 {位运算符 | & ! ~ ^ >> << }
位运算符需要将数据转换成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
负数的2进制:实质上补码表示 正数的补码是本身 负数的补码是反码+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为1,不同为0。【7 & -7】【11–1 00–1 01-0 10-0】
00000111
11111001
00000001
^ 按位异或 相同位不同则为1,相同则为0。【7 ^ -7】【01–1 10–1 11–0 00–0】
00000111
11111001
11111110
~取反 0和1全部取反
<<左移位 2进制整体向左移动指定的位数
7<<2
. >>右移 2进制整体向右移动指定的位数
7>>2
面试题:最有效率的方法算出2乘以8等於几? 2<<3; 表示2 向左移3位
5.三元运算符 【(判断)? 数据值1 :数据值2】
先判断,判断结果为true,整运算表达式的结果取数据值1
判断结果为false,整运算表达式的结果取数据值2
例如:
public class YunSuanFu{
public static void main(String args[]){
//1.赋值运算符 =
int int1=100;
//2.算术运算符 【+ - * / %{求余/取模} ++{自动加1} --{自动减1} 】
int num1=10;
int num2=3;
//+ 1.进行加法运算 2.连接符号
System.out.println(num1+"+"+num2+"="+(num1+num2));
System.out.println(num1+"-"+num2+"="+(num1-num2));
System.out.println(num1+"*"+num2+"="+(num1*num2));
System.out.println(num1+"/"+num2+"="+(num1/num2));
System.out.println(num1+"%"+num2+"="+(num1%num2));
//++{自动加1}
//变量++ 【先用后加1】
//System.out.println(num1++); //10
//System.out.println(num1); //11
// ++变量 【先加1后用】
//System.out.println(++num1); //11
//System.out.println(num1); //11
//--{自动减1}
//变量-- 【先用后减1】
//System.out.println(num1--); //10
//System.out.println(num1); //9
// --变量 【先减1后用】
System.out.println(--num1); //9
System.out.println(num1); //9
//3.比较运算符 【> < >= <= == !=】运算结果为boolean
int a=15;
int b=20;
System.out.println(a+">"+b+"=="+(a>b)); //false
System.out.println(a+"<"+b+"=="+(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
//4.逻辑运算符 【|| && ! 】使用逻辑运算符的数据是boolean值
//[短路或]|| 运算符号的左边结果为true时,右边不需要计算,结果为true
System.out.println((a1) ); //true
//[短路与]&& 运算符号的左边结果为false时,右边不需要计算,结果为false
//java.lang.ArithmeticException: / by zero
System.out.println((a>b) && ((10/0)>1) ); //false
//!求反
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); //28
System.out.println(7>>2); //1
//(判断)? 数据值1 :数据值2 [2选1]
char ch1=(a>b) ? 'T':'F';
System.out.println("ch1=="+ch1); //F
}
}
3.java中的语句
1.顺序结构 【写好的代码从上往下一行一行的逐个执行】
2.选择结构【if语句 switch语句】
例如:if语句
public class IfDemo{
public static void main(String args[]){
//if(判断){java代码} 【只选对的】
//先执行判断,true时执行{java代码},false时不执行
//if(判断){java代码1}else{java代码1}【2选1】
//先执行判断,true时执行{java代码1},false时执行{java代码2}
//if(判断1){java代码1}else if(判断2){java代码2}......else{java代码n}【多选1】
//先执行判断1,判断1true时执行{java代码1},false时执行判断2,判断2为true{java代码2}
//所有的判断都为false,则执行最后一个else中的{java代码n}
//判断1为true,执行判断2,判断2为true时java代码1,判断2为false时java代码2
//判断1为false,执行判断3,判断3为true时java代码3,判断3为false时java代码4
int code=59;
if(code>=60){
if(code>=80){
System.out.println("优秀");
}else{
System.out.println("良好");
}
}else{
if(code>=0){
System.out.println("不及格");
}else{
System.out.println("不能为负数");
}
}
}
}
例如:switch语句
public class SwitchDemo{
public static void main(String args[]){
//switch语句
int num1=10;
int num2=3;
char op='+';
switch(op){
case '+':System.out.println(num1+"+"+num2+"="+(num1+num2));
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));
default:System.out.println("运算有误!");
}
}
}



