变量和运算符

变量和运算符

1、数据类型

四类八种

数据类型 占用内存 取值范围
byte 1个字节 -2^7 ~ 2^7-1
short 2个字节 -2^15 ~ 2^15-1
int 4个字节 -2^31 ~ 2^31-1
long 8个字节 -2^63 ~ 2^63-1
float 4个字节 (正数)1.4E-45 - 3.4028235E38 (整体) -3.4028235E38 ~ 3.4028235E38
double 8个字节 1.7976931348623157E308 ~ 4.9E-324
char 2个字节 65536(看字符编码)
boolean 1个字节 两个值 true和false

定义变量的规则

  1. 变量名字里不能有空格。
  2. 避免使用关键字,class public int static
  3. 避免使用汉字,不要使用英文和拼音混着写
  4. 整体是驼峰命名,首字母小写 lowerCamelCase
  5. $和_可以到处使用,但是不建议当做开头
  6. 数字不能开头

基础数据类型的运算

#(1)算术运算符

  +  -  *  /   %    ++   --  

i++--i 其实相当于 i = i+1;

int num1 = 12;
++num1;
System.out.println(num1);

结果是13
int num1 = 12;
num1++;
System.out.println(num1);

结果是13
int num1 = 12;
int num2 = num1++;
System.out.println(num2);

结果是:12
    先赋值后计算
int num1 = 12;
int num2 = ++num1;
System.out.println(num2);

结果是:13
    先计算后赋值

看看以下的代码:

byte num1 = 12;
long num2 = 13;
long num3 = num1 + num2;
int num1 = 12;
int num2 = 13;
int num3 = num1 + num2;
System.out.println(num3);

结论:

算术运算符,int以下的做运算,结果都是int类型,long和其他的类型做运算,结果是long。

++i 和 i++的区别

如果不赋值都是自增1

如果赋值,i++ 是 先把i赋值给其他变量,然后自增, ++i是先赋值再自增。

逻辑运算符-真值表

逻辑运算的结果是布尔型 boolean 与 或 非

条件1 condition1 条件2 condition2 结果
true true true
true false false
false true false
false false false

条件1 condition1 条件2 condition2 结果
true true true
true false true
false true true
false false false

条件1 condition1 结果
true false
false true

符号表示

& | ! && ||

boolean flag1 = true;
		boolean flag2 = false;
		
		boolean flag3 = flag1 & flag2;
		boolean flag4 = flag1 | flag2;
		boolean flag5 = !flag1;
		
		
		int num1 = 12;
		int num2 = 15;
		boolean flag6 = num1 >= num2;
		boolean flag7 = num1 == num2;
		
		
		boolean flag8 = (num1 >= num2) & (num1 == num2);
		
		System.out.println(flag8);

短路运算符

&& 短路运算符 如果短路运算的结果是false,那么结果直接就是false, 不会继续运算后边的逻辑

|| 短路运算符 如果短路运算的结果是true,那么结果直接就是true, 不会继续运算后边的逻辑

看看以下代码:

byte num1 = 12;
byte num2 = 13;
byte num3 = num1 & num2;
byte num1 = 12;
long num2 = 13;
long num3 = num1 & num2;
char c1 = '1';
char c2 = '2';
char c3 = c1 & c1;
System.out.println('a');
System.out.println('a'+'b');

亦或

^ 相同为零 不同为1

#(3)赋值运算符号

+= -= *= /= =

i += 5 相当与 i = i + 5;

#(4)三目运算符

条件 ? 结果1 : 结果2;

条件的结果一定是boolean ,只能是true或者false;

条件是可以复杂的

boolean condition1 = 5 > 3;
boolean condition2 = 5 > 3;
boolean condition3 = 5 > 3;
int num = (condition1 && (condition2 || condition3)) ? 1 : 2;

#(6)位移运算符

符号 说明
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)
>> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.
>>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负

#4、数据类型的转型

int类型的变量转long,怎么转,自动转。

int num1 = 152;
long num2 = num1;
System.out.println(num2);

long类型的变量转int,怎么转,强转。

long num1 = 2345645645645464564L;
int num2 = (int)num1;
System.out.println(num2);

float类型转long

float num1 = 234545654654654564564564.4F;
long num2 = (long)num1;
System.out.println(num2);

long类型转float

long num1 = 2345645645645464564L;
float num2 = num1;
System.out.println(num2);

结论:

任何有精度缺失(有可能让两个数变成完全不一样的两个数)的转型都需要强转,jvm不给你负责。

取值范围大的转取值范围小的自动转,反之需要强转。

posted @ 2022-04-20 22:05  追风的羊  阅读(45)  评论(0)    收藏  举报