The Second Day!常量 变量 运算符

第二天,字面值常量、基本数据类型、运算符。

先补充一点关于进制的问题

 public static void main(String[] args) {
        System.out.println(0b100);
  //0b 表示二进制
  System.out.println(0100);
  //0表示八进制
  System.out.println(100);
  //没有标记 就是十进制
  System.out.println(0x100);
  //0x表示十六进制
  System.out.println("0x100");
  //""中是字符串 直接打印
  System.out.println("Hello World!");
 }
}

常量

啥叫常量呢?就是在执行一段程序过程中,值不发生变化的量。常量分为字面值常量和自定义常量。字面值常量包括:整数常量、小数常量、字符常量、字符串常量、布尔常量、空常量。整数常量和小数常量对应的就是指整数和小数。***字符常量指单引号括起来的单个数字、字母或者符号。***字符串常量指双引号括起来的内容。布尔常量包括true、false。空常量为null,它不能进行输出。

 public static void main(String[] args){
  //输出字面值常量
        System.out.println(1000);
        System.out.println(3.14);
        System.out.println('A');
        System.out.println('1');
  //''中是字符常量,能是单个。   ""字符串常量
        System.out.println("1");
        System.out.println(true);
        System.out.println(false);
        System.out.println("Hello World!");
 }

变量

何为变量?
即在一段程序中,值发生变化的量。定义变量其实就是内存中开辟一小块区域。定义变量的目的是为了不断的存放同一类型的变量并可以重复使用。定义变量的格式: 数据类型 变量名=变量值;
为什么引入数据类型呢?因为定义一个变量就是内存中开辟一点空间,那么我们每次开辟多大的空间呢,为了解决这个问题,Java提供了不同的数据类型,针对不同的数据类型,在内存中分配了不同的内存空间。数据类型又分为:基本数据类型和引用数据类型。

基本数据类型包括四类八种,它的详细信息见下表:

数据类型字符字节数范围
整数型byte1(8bit)-128~127
整数型short2(16bit)-2^15 ~ 2^15-1
整数型int4(32bit)-2^31 ~ 2^31-1
整数型long8(64bit)-2^63 ~2^63-1
浮点型float4(32bit)\
浮点型double8(64bit)\
字符型char2(16bit)0~2^16-1=65535
布尔型boolean1(8bit)\

使用变量的注意事项

  • 变量命名一小写字母开头。
  • 变量必须先赋值后使用。
  • 一个作用域内不能命名同一名称的变量。

自动类型提升

byte short char 在参与数学运算时,会自动提升为int类型,如果还有long ,float double 参与运算
则会相应的提升为 long float double ,布尔类型不参与数学运算,byte short char 之间不发生转换。

强制类型提升

强制将一个数据,转换成我们要的数据类型,强制类型转换,有可能会发生精度损失的问题。
格式:目标数据类型 变量名=(目标数据类型)(被转换的数据);

byte a=10;
byte b=20;
short r=a+b;
//报错,byte,short,char运算时会转换为int类型,byte(2字节)不能装下int(4字节)。
a=a+1;
//报错,
byte c=1;
short d=127;
short e=(short)(a+b);
//运算时虽然强制转换为int类型,但强制转换为short类型,128在short数据范围内,不会发生精度损失。
byte r=r+1;
// 报错,byte不能装下int。
byte rr=3+4;
// 不会报错,常量优化机制,多个常量相加时,它会先算出结果,看结果是否在数据类型范围内,在就不报错,否则就报错。
char ch='a';
char ch2=ch+1;
//报错,int转换为char可能会发生精度损失。
int r=ch+1;
//不报错,输出98.ASCII码表中:'a'  97,'A' 65,'0' 48.

运算符

运算符:对常量和变量进行操作的符号称为运算符。
运算符的分类:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符

算术运算符有:+,-,,/,%,–,++
/:整数相除只能取整数,要得到小数需要用浮点数
++:自加,对原有的数据进行+1,
–:自减,对原有数据进行-1
–,++运算符单独使用时放在操作数前面和后面效果一样。参与运算时使用,++,–在操作数前面,先自加或自减,再参与运算;放在操作数后面,先参与运算,再自加或者自减。例:

int a=3;
a++; 
//此处a为4
++a;
//此处a为5
int num=a++;
//num=5,a=6
int num2=++a;
//num2=6,a=6

赋值运算符:=,+=,-,=,*=,/=,%=
比较运算符:==,!=,<,>,<=,>=,比较运算符结果为boolean型
逻辑运算符:&(并且),|(或者),!(非),^(异或),&&(短路与),||(短路或)
逻辑运算符结果是boolean型。&,|,&&,||在运算结果上没有区别,区别在运算效率上,&,运算符两端都会计算,而&&,||只要左端能得出计算结果,则不会执行右端。

int a=1;
int b=2;
boolean flag =a==2&&(a>b);
//&&左端已经为false,右端不会再判断。

三元运算符
语法:表达式?结果1:结果2
案例:求两个数最大值

int a=1;
int b=2;
int max=a>b?a:b;

位运算符
位运算符:&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
&:有0则0
|:有1则1
^:相同则0,不同则1。 ^ 特点 一个数被另外一个数位异或两次该数不变
~:按位取反 0变1 1变0
<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80

int flag =1&2;    //0
int flag2=1|2;    //3
int flag3=~3;    //4
int num =3>>2;   //3/2^2=0
int num2 =3<<2;   //3*2^2=12

位运算是直接对二进制补码进行运算,效率高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值