变量和数据类型
分类:
(1)整数
byte 1个字节 -128到127
short 2个字节 正负3万多
int 4个字节 正负21亿 整数默认int类型
long 8个字节 大概19位数字 表示long类型数据后面需要加L/l
long a = 100000l;
(2)小数
float 4个字节 表示float数据后面需要加F/f
float a = 100f;
注意: 虽然float占4个字节,但是由于采用科学计数法,取值范围远远超过long
double 8个字节 小数默认double类型
(3)字符:
char 2个字节
(4)布尔:
boolean 1个字节 取值为true或者false
int a = 1;
byte b = 2;
short c = 9999;//极限
a= a + b;
System.out.println(a+b); //1+2
System.out.println(a+c); //1+3
System.out.println(b+c); //2+3
a = a + b;
System.out.println(a);
// b = b + a; 报错 int 类型(4个字节),Byte 类型(1个字节) 所以无法兼容
b = (byte) (b+a);
System.out.println(b); //强制类型转换
//b = b + b; 报错
//c = c + c; 报错
System.out.println("------");
b = (byte)(b + b); //需要 强制类型转换
//c = (short)(c +c ); //需要 强制类型转换
System.out.println("满载的数据类型向下强转");
c = (byte)(c + c);
System.out.println(c);//30 输出30 在强制转换时 会截取多出的字节 (二进制数 八位等于1字节)
float f= 1.1f;//数值后必须加f/F 否则报错
// a = a + f; 报错 虽然都是四个字节 但是存储方式不同
a = (int)(a + f); //6
System.out.println(a); // 失精度 省略小数位,不发生四舍五入
f = (float) (a + f); //7.1
System.out.println(f);
double d = 3.333;
// f = f + d; 报错 float (四个字节) double (八个字节) 无法向下兼容
f = (float)(f + d); //d 是double类型 截取无效的四个字节 强转为四个字节的 float类型
char zf ='a';
char ar = 97 ;
System.out.println(zf); //a
System.out.println((int)(zf)); //97
System.out.println(ar); //a
运算符
数学运算符:
(1)+: 加法运算
(2)-: 减法运算
(3)*: 乘法运算
(4)/: 除法运算
int a = 3;
int b = 2;
System.out.println(a + b);//3 + 2: 5
System.out.println(a - b);//3 - 2: 1
System.out.println(a * b);//3 * 2: 6
//3/2: int/int 结果必然是int类型
System.out.println(a / b);//3 / 2: 1
//int * double / int ==> double / int ==> double / double ==> double
System.out.println((a*1.0) / b);//3.0 / 2 ==> 3.0/2.0 ==> 1.5
算术运算符
/*
%运算符: 取余数(模)运算符
被除数 ÷ 除数 = 商(/: 取的就是商) ...... 余数(%: 取的就是余数)
作用:
1.判断数字的奇偶性:
数字%2 结果是0 说明数字是偶数
数字%2 结果不是0 说明数字是奇数
2.判断一个数字是否能够被另外一个数字整除
结果为0: 说明可以整除
结果不为0: 说明不可以整除
3.可以把%和/结合使用计算数字的个位,十位,百位,千位
比如有个int变量num,保存数字1234
int num = 1234;
个位: num%10
十位: num/10%10
百位: num/100%10
千位: num/1000%10
*/
public class Demo11Operator {
public static void main(String[] args){
System.out.println(10%2);//0 说明10是偶数
System.out.println(11%2);//1 说明11是奇数
System.out.println(100%25);//0 说明100可以被25整除
System.out.println(100%26);//22 说明100不可以被26整除
System.out.println("---------------");
int num = 1234;
System.out.println(num%10);//4: 个位 1234 ÷ 10 = 商123 .... 余数4(%)
//System.out.println(num/10);//123 1234 ÷ 10 = 商123(/) .... 余数4(%)
System.out.println(num/10%10);//3 十位 123 ÷ 10 = 商12(/) ... 余数3(%)
//System.out.println(num/100);//12 1234 ÷ 100 = 商12(/) ... 余数34(%)
System.out.println(num/100%10);//2 百位 12 ÷ 10 = 商1(/) ... 余数2(%)
System.out.println(num/1000%10);//1 千位
}
}
算术运算符+的特殊用法
/*
+符号的作用
1.数学中的加法运算(数字相加,字符相加)
2.字符串的拼接(把两个字符串连在一起)
*/
public class Demo12Operator {
public static void main(String[] args){
System.out.println(5+5);//10
/*
int + char ==> int + int ==> int
需要:
char ==> int 查看ASCII码表 'A'对应65
*/
System.out.println(5+'A');//5 + 65: 70
/*
自动类型转换中:
byte/short/char类型,只要参加运算,会自动转换为int类型
char + char ==> int + int ==> int
需要:
char ==> int 查看ASCII码表 'A'对应65
char ==> int 查看ASCII码表 'B'对应66
*/
System.out.println('A'+'B');//65 + 66: 131
System.out.println("Hello"+"World");
//"5+5="+5+5: 从左向右计算
//先计算"5+5="+5: 此处+号代表字符串的连接 结果是"5+5=5"
//然后"5+5=5"+5: 此处+号代表字符串的连接 结果是"5+5=55"
System.out.println("5+5="+5+5);//5+5=55
//()的优先级是比较高的,所以先计算5+5 结果10
//然后"5+5="+10: 此处+号代表字符串的连接 结果是"5+5=10"
System.out.println("5+5="+(5+5));//5+5=10
}
}
自增自减运算符
package day02;
/*
自增(++)自减(--)运算符(代码演示只演示++)
1.作用: 让变量的值增加1(++)或者减少1(--)
2.使用格式:
(1)可以写在变量的前面: ++a,--a
(2)可以写在变量的后面: a++,a--
3.使用特点:
(1)单独使用: ++/--自己独占一行,没有其它运算一起参与
前++和后++,没有任何区别,都是让变量的值增加1
前--和后--,没有任何区别,都是让变量的值减少1
(2)混合使用: 和其它运算(赋值,打印等)一起
前++/--: 先++/--,后再使用 先给变量的值增加(++)或者减少(--)1,然后再使用++/--后的结果
后++/--: 先使用,然后++/-- 先使用变量的值,再把变量的值 增加(++)或者减少(--)1
重点: ----最常用的东西
a++: 变量a的值增加1
a--: 变量a的值减少1
*/
public class Demo15Operator {
public static void main(String[] args){
int a = 2;
//++自己独占一行,没有其它运算一起参与
a++;//a = a + 1 = 2 + 1
System.out.println(a);//3
int b = 2;
//++自己独占一行,没有其它运算一起参与
++b;//b = b + 1 = 2 + 1
System.out.println(b);//3
System.out.println("-----------------");
int c = 2;
/*
目前是++和赋值一起操作,属于混合运算
而且++写在了c的前面,先把c的值增加1,
c的值变为3,然后再把结果3赋值给变量d,d的值3
*/
int d = ++c;
System.out.println(c);//3
System.out.println(d);//3
System.out.println("-----------------");
int e = 2;
/*
目前是++和赋值一起操作,属于混合运算
而且++写在了e的后面,所以先使用e的值(2)赋值给变量f,所以f的值是2,
然后e的值再增加1,变成3
*/
int f = e++;
System.out.println(e);//3
System.out.println(f);//2
System.out.println("-----------------");
int x = 4; //5 6
/*
表达式(x++)+(++x)+(x*10)是从左到右计算的
先计算(x++): 因为++在后面,先使用x的值4,然后x的值增加,变成5
4 + (++x)+(x*10)
接着计算(++x): 因为++在前面,先把x的值增加1,x变成6,然后再使用6
4 + 6+(x*10)
接着计算x*10 --> 6*10 结果: 60
4 + 6 + 10 结果: 70
*/
int y = (x++)+(++x)+(x*10);//4+6+60=70
System.out.println(x);//6
System.out.println(y);//70
}
}
总结
能够说出8种基本数据类型
四类八种:
整数: byte,short,int,long
小数: float,double
字符:char
布尔:boolean
能够完成变量的定义及输出
int a = 10;
int b;
b = 20;
int c,d,e;
c = 30;
d = 40;
e = 50;
int f = 60,g = 70;
能够知道类型转换的格式和顺序【小到大自动,大到小强制】
double d = 6.6;
int a = (int)d;
能够说出常见的运算符有哪几种
数学运算符: +,-,*,/,%
赋值运算符: +=,-=,/=,*=,%=
自增,自减运算符: ++,--
能够知道除法和取余的区别
/: 除法 求的是商
%: 取余 求的余数
能够完成字符和字符串的加
+:
(1)数学中的加法运算(数字和数字,数字和字符,字符和字符)
(2)字符串的连接: +的左侧或者右侧一点出现字符串,就无法进行数学意义上的加法运算,代表字符串的连接