JAVA的数据类型、变量、常量和运算符
1.数据类型

1.1 8大基本数据类型
| byte | 1个字节 2^8 [-128,0,127) |
| short | 2个字节 2^16 约3万 |
| int (默认) | 4个字节 2^32 约21亿 |
| long | 8个字节 2^64 大于过21亿 |
| float | 4个字节 约6位小数 |
| double(默认) | 8个字节 约15位小数 |
| char | 1个字节 'a' |
| boolean | false true |
1.2 引用数据类型
- 对象
- 数组
- 接口
1.3数据类型转换
如果存储多种类型数据进行运算,运算结果的数据类型会以其中最大的为准,若所以运算数据类型均小于int,则结果默认会自动提升为int类型。
-
自动类型提升:从小到大;例如byte----->short---->int-----long

byte b=100; short s=b; 运算的数据类型为byte和short 其结果的数据类型为short 因其小于int,故自动提升其数据类型为int,只能声明Int数据类型进行接收。 int i=b+s;
//公司每月y营业收入为10亿,求其一年的营业收入为多少;
int income=1000000000;
int month=12;
注意 此时运算的结果为int 且其值已超Int类型范畴,故在其运算前进行Long的数据类型转换
long total=(long)income*month;
System.out.println(total);
- 强制类型转换:从大到小,可能会损失精度;例如int a=97;char c=a;
int a=97;
char c= (char) a;
short s= (short) a;
byte b= (byte) a;
System.out.println("c = " + c);
float f=3.1234f;
int i= (int) f;
System.out.println("i = " + i);
double d=1.12222333333;
long l= (long) d;
System.out.println("l = " + l);
long l2=22222222222222222l;
float f2=l2;
double d2=l2;
System.out.println("f2 = " + f2);
System.out.println("d2 = " + d2);
2.变量、常量
- 变量:在程序运行期间其值可以发生改变,基本数据类型均可以使用。
-
常量:在程序运行期间其值固定不变,被final修饰;一般分为两种:字面常量和自定义常量。
不论是变量还是常量,均是用来储存单个数据;这里注意的是在存储数据时要先声明数据类型、变量名、赋值在使用。
例如 int age = 20; String name = "张三";
家庭地址、身份证不会随意改变
final String adress="北京市海淀区xxxx";
final String userId="21000199950525xxxx";
求面积 r=10m;
final float PI;
PI = 3.14f;
area = PI * r * r;
System.out.println("area = " + area);
注意:java是强类型语言,声明数据类型和存储数据的类型要一致,否则会报错。
3.运算符
| 运算符 | 符号 |
| 赋值 | a=b |
| 算数 | a+b a-b a*b a/b a%b 乘除模加减 |
| 一元 | i++、i--: 先运算后赋值 ++i、--i:先赋值后运算 |
| 逻辑 | & && | || ! ^ boolean |
| 扩展 | a+=2 a-=2 a *=2 a/= 2 a%=2 |
| 字符串连接 | "我"+"爱"+me |
| 条件 | < <= > >= == != boolean |
| 三目条件 |
x>y? a:b; true为a、false为b |
声明赋值 int n=5;
int m=n;
算术运算符
a=3,b=5,c=a+b;求c。
int c=a+b;
System.out.println(c);
int d=b-a;
System.out.println(d);
今天是2022年2月27日,2月1日是星期二,请问今天是星期几?
int sumDay=27;
int weekSum=sumDay+1%7=0;
所以,今天是星期天;
a+=2 a=a+2;
a-=2 a=-2;
a *=2 a=a*2;
a/= 2 a=a/2;
a%=2 a=%2; 模是求余数;模谁不大过谁,余数小于除数;若a<除数,则余数等于本身a;
三目条件运算符
int score=80;
String num=score>60?"及格":"不及格";
System.out.println(num);
结果:及格
int a,b,c;
int max=(a>b&&a>c)?a:(b>c?b:c);
求198各个位数之和;1+9+8;
int n=198;
int fisrtNum=n/100;
int secondNum=n%100/10;
int threeNum=n%10;
int sumNum=fisrtNum+secondNum+threeNum;
System.out.println(fisrtNum);
System.out.println(secondNum);
System.out.println(threeNum);
System.out.println(sumNum);
位运算符:将十进制转换为二进制再对其同位数进行运算,有3种位运算符
1)& 例如3&2
3的二进制---> 11 1 1
---->false 0 ----->true 1 故3&2的二进制为10;转换为十进制为2;
2的二进制---> 10 0
2)|例如 3|2
3的二进制---> 11 1 1
---->true 1 ----->true 1 故3&2的二进制为11;转换为十进制为3;
2的二进制---> 10 0
3) ^ 例如4^2
3的二进制---> 100 0 0
---->false 0 ----->true 1 故3&2的二进制为1010;转换为十进制为6;
2的二进制---> 10 0 1
4)>> <<
8>>2 --->8/2*2
8>>3 --->8/2*3
4<<3 --->4*2的三次方
注意:不论是哪种运算符,顺序如何进行计算,先算括号里的。
浙公网安备 33010602011771号