Java基础知识2【变量与数据类型】

Java基础知识2

变量与数据类型

变量

语法1:
  数据类型 变量名;
  变量名 = 变量值;
语法2:
  数据类型 变量名 = 变量值;

// 语法1
int num1;
num1 = 10;
// 语法2
int num2 = 20;
  • 命名规则

    • 开头:英文字母(大写小写)、下划线、$符号 (注意:不能数字开头)
    • 其他:英文字母(大写小写)、下划线、$符号、数字
  • 命名规范驼峰命名——首字母小写,多个词除第一个词外其他首字母大写

  • 注意

    • 变量声明后使用前必须初始化,否则编译不通过。
    • 同一个类中变量不能重名

常量

语法:
  final 类型 常量名 = 值;

final double PI = 3.14;
  • 修饰符final

  • 命名规范:全部大写,多个词之间使用下划线。

  • 特点一经赋值,无法修改。

数据类型

非浮点型范围: -2bit值-1 ~ 2bit值-1 -1
float有效数字位: 6-7
double有效数字位: 15-16

数据类型字节范围类型备注
byte1(8bit)-27 ~ 27 -1字节型-
char2(16bit)-215 ~ 215 -1字符型-
short2(16bit)-215 ~ 215 -1短整型-
int4(32bit)-231 ~ 231 -1整型-
float4(32bit)-3.4E+38 和 3.4E+38单精度浮点型-
long8(64bit)-263 ~ 263 -1长整型-
double8(64bit)-1.7E-308~1.7E+308双精度浮点型-
boolean-true / false布尔型-
String--字符串类型非基本数据类型
Date--日期类型非基本数据类型,位于util包
// 8种基本数据类型
byte byte_1 = 1;
char char_1 = 'a';
short short_1 = 10;
int int_1 = 100;
float float_1 = 11.3f;
double double_1 = 12.43;
long long_1 = 100000L;
boolean boolean_1 = true;

// 其他数据类型
String string_1 = "abc";
// new Date() 获取当前事件
Date date = new Date();
  • 注意String不是基本数据类型,它是一个类(java.lang.String)

数据类型转换

自动转换
  精度向精度转换【按照字节数由小到大,精度递增】
  整型浮点型转换【除int转double,其他都有可能损失精度】

强制转换
  精度向精度转换
  需要在原类型前加(),内部写需要转换的类型
  强制转换只保留当前精度位,多余精度直接舍弃(截断)

拓展:char向int型转换,返回的是ASCII码值

// 自动转换
int num1 = 10;
douoble num2 = num1;

// 强制转换: num4 = 4 (默认强制转换会截断小数点位)
double num3 = 10;
int num4 = (int)(num3/2.2); 

数值交换

// 方法1:借助中间变量实现
int number1 = 8;
int number2 = 9;
int temp = number1;
number1 = number2;
number2 = temp;

// 方法2:不借助中间变量实现
int number3 = 3;
int number4 = 5;
number3 = number3 + number4;	//8
number4 = number3 - number4;	//8 - 5 = 3
number3 = number3 - number4;	//8 - 3 = 5

运算符

算术运算符
运算符作用示例
+加法1 + 1 = 2
-减法1 - 1 = 0
*乘法1 * 6 = 6
/除法6 / 2 = 3
%取余7 % 2 = 1
++自增a++ 即 a = a + 1
自减a-- 即 a = a - 1
  • 自增、自减:运算符写在变量前面,则先进行运算后复制使用,在后面则相反
    • a++ 先赋值使用,再+1
    • ++a 先+1,再赋值使用
    • a– 先赋值使用,再-1
    • –a 先-1,再赋值使用
int number1 = 6;
int number2 = 8;
// 加减乘除运算
int result1 = number1 + number2;	// 6 + 8 = 14
int result2 = number2 - number1;	// 8 - 6 = 2
int result3 = number1 * number2;	// 8 * 6 = 48
// int型结果截断,即只取整数部分,后面的直接舍弃不进位
int result4 = number1 / number2;	// 6 / 8 = 0
// 取余:计算余数
int result5 = number1 % number2;	// 6 % 8 = 6
// 自增自减
int result6 = number1++;	// result6 = 6  number1 = 7
int result7 = ++number1;	// result7 = 8  number1 = 8
int result8 = number2--;	// result8 = 8  number2 = 7
int result9 = --number2;	// result9 = 6  number2 = 6
复合运算符
运算符作用
+=a += 5 等效于 a = a + 5
-=a -= 5 等效于 a = a - 5
*=a *= 5 等效于 a = a * 5
/=a /= 5 等效于 a = a / 5
%=a %= 5 等效于 a = a % 5
  • 注意: 单个运算符,当类型不匹配不能转换等价
short a = 4;
// 编译通过,符合运算符内部自动转换了
a += 5; 
// 编译不通过,类型不匹配
a = a + 4; 
关系运算符
运算符含义返回值示例示例结果
==等于布尔型2 == 2true
!=不等于布尔型2 != 2true
<小于布尔型2 < 5true
>大于布尔型2 > 5true
>=大于等于布尔型2 >= 2true
<=小于等于布尔型2 <= 2true
  • 注意
    • > < >= <= 只适用于数值类型判断
    • == 只能使用在基础类型中,以及对象和 null 比较的时候判断
逻辑运算符
  • 短路: 当前面的式子已经可以决定结果,则不运行后面的式子了
运算符含义规则示例示例结果
||短路或全假为假,有真则真true || falsetrue
&&短路与有假则假,全真为真false && truefalse
取反结果为相反! falsetrue
//逻辑运算符
int x1 = 1;
int y1 = 2;
// 注意x1值改变了
System.out.println((++x1 == y1) && (++x1 != y1));	// true (2 == 2) && (3 != 2)
int x2 = 3;
int y2 = 4;
System.out.println((++x2 == y2) || (++x2 != y2));	// true (4 == 4) || (5 != 4) 发生短路
条件运算符(三元运算符)
  • 语法: 条件 ? 语句1 : 语句2
  • 规则: 当条件成立时运行语句1,否则运行语句2
// 条件运算符
double money = 1602;
double new_money = (money > 1500) ? (money + 200) : (money + 500);
System.out.println(new_money);  // 1802 条件成立,执行 money + 200
位运算
  • 计算流程:
    1. 将十进制转为二进制:除二取余,然后倒序排列,高位补零
    2. 根据运算符按位运算
运算符含义规则示例示例结果
&与运算同1为11 & 00
|或运算同0为01 | 01
^异或运算不同为11 ^ 01
int num1 = 2;	//10
int num2 = 3;	//11
System.out.println(num1 & num2); // 2(十进制) —— 10(二进制)
System.out.println(num1 | num2); // 3(十进制) —— 11(二进制)
System.out.println(num1 ^ num2); // 1(十进制) —— 01(二进制)
运算符优先级

优先级别最低的是赋值运算符=
优先级别最高的是()
赋值运算符可以通过()控制表达式的运算顺序
算术运算符 > 关系运算符 > 逻辑运算符

备注:
  具体可参考最上方优先级链接
  当不确定优先级的时候,推荐直接使用()进行区分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值