JavaSE——基础知识(一)(常量变量,数据类型以及运算符)

JavaSE—基础知识(一)(常量变量,数据类型以及运算符)


1.常量

在这里插入图片描述 1.1进制转换
  • 任意进制到十进制——位权展开法
    例如:a:二进制到十进制转换:0b1100=1*2^3+1*2^2+0*2^1+0*2^0
                                  =12
         b:八进制到十进制转换:01100=1*8^3+1*8^2+0*8^1+0*8^1
                                =576
       	 c:十六进制到十进制转换:0x1100=1*16^3+1*16^2+0*16^1+0*16^0
                                  =4352
    
  • 十进制到任意进制——除基取余,直到商为零,余数反转
    例如:a:十进制数52转为二进制:52/2=26余0
                              26/2=13余0
                              13/2=6余1
                              6/2=3余0
                              3/2=1余1
                              1/2=0余1
            结果为:0b110100   
         b:十进制数52转为八进制:52/8=6余4
                               6/8=0余6
            结果为:064
         c:十进制数52转为16进制:52/16=3余4
                               3/16=0余3
            结果为:0x34
    
  • 任意进制到任意进制——以十进制为桥梁进行转换
    例如:将0b100100转为十六进制
      0b100100转换为十进制是36,36转换为十六进制是0x24
      所以0b100100对应的十六进制就是0x24。
    

1.2有符号数据表示法(原码,反码,补码)

计算机底层在做运算的时候都是用补码进行运算的,一个正数的原码,补码,反码都一样,负数的反码是符号位不变,其它位取反,补码是反码加1。

例如:

符号位数值位原码反码补码
+700000111000011100001110000111
-710000111000011111110001111001

2.变量

(1)变量的概念:在程序执行过程中,在某个范围内其值可以发生改变的量。
(2)定义变量的原因:用来不断的存放同以类型的常量,并可以重复使用。
(3)格式:数据类型 变量名=变量值;
(4)使用变量的注意事项

  • 相同的作用域(两个大括号中间的)中不能定义两个同名变量
  • 没有初始化的变量不能使用

3.数据类型

  • 为什么要有数据类型?
    答:我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。如果没有数据类型,那么我们需要开辟多大的内存空间合适呢?为了解决这种问题,java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间。
(1)数据类型的分类
  • 基本数据类型
整数型字节数范围
byte1-128~127
short2-2^15 ~ 2^15 - 1
int4-2^31 ~ 2^31 - 1
long8-2^63 ~ 2^63 - 1
浮点数字节数范围
float4-3.40310^38 ~ 3.40310^38
double8-1.79810^308 ~ 1.79810^308
字符型字节数范围
char20 ~ 2^16 - 1 = 65535
布尔型字节数范围
boolean1true或false
  • 引用数据类型(后面文章将会有介绍)
注意事项:整数默认是int型的,浮点型默认是double型的。
定义long类型数据时,值后面加上一个L后缀,表示这是一个long类型。
定义float类型数据时,值后面必须加上F后缀,表示这是一个float类型数据。
(2)数据类型转换——隐式转换(类型的自动提升)
class   Demo{
	public static void main(String[] args){
				byte t1=3;
				byte t2=4;
				byte t3=t1+t2;
				System.out.println(t3);
							}
}

这个程序编译的话会报错,因为虽然t1,t2都是byte型,但t1+t2是int型,int型的4是个字节,byte类型装不下,所以报错。因为在byte,short,char型数据参与运算时,都会自动提升为int型。
正确的代码为:byte t3=(byte)t1+t2;

(3)数据类型转换——强制转换
  • 格式:目标数据类型 变量名=(目标数据类型)被转换的数据
  • 注意:尽量不要使用强制类型转换,会存在损失精度的问题
例如:
class yao{
	public static void main(String[] args){
		byte t=(byte)130;
		System.out.println(t);//输出结果是-126
 		}
}

因为130是4个字节的int类型的数据,而要转为byte类型的话,就会将前面三个字节丢弃,所以就剩下了最后一节。
00000000 00000000 00000000 10000010(补码)
1 0000010反码是1 0000001原码是1 1111110,结果就是-126。

注意:计算机在做底层运算时都是用补码来算的。
(4)字符或字符串参与运算

例如:

class  yao1{
	public static void main(String[] args){
		System.out.println("Hello"+'a'+1);//输出是Helloa1
		System.out.println('a'+1+"Hello");//输出是98Hello
	}
}

‘a’的ASCII码值为97,所以程序中第二个输出就是’a’+1=98,再加”Hello“。

4.运算符

(1)算术运算符(++和–的用法)
  • 用法:
单独使用:放在操作数的前面和后面都一样(都是自增或自减)。
参与运算使用:a:在操作时前面时,先自增或自减后参与运算。 b: 在操作数后面时,先参与运算后自增或自减。
  • 例如:
class yao2{
	public static void main(String[] args){
		int n=1;
		int h=(n++)+2+(++n)+4+(--n)+3+(n--)+1+(--n)+5;
		System.out.println(n);//0
		System.out.println(h);//23
	}
}

详解:
(n++)+2 n=2,h=3
(++n)+4 n=3,h=10
(–n)+3 n=2,h=15
(n–)+1 n=1,h=18
(–n)+5 n=0,h=23

(2)赋值运算符
  • 赋值运算符:=,+=,-=,*=,/=,%=
  • 注意事项:赋值的左边的数据必须是一个变量
(3)逻辑运算符
  • 逻辑运算符:&(与),|(或者),!(非),^(异或),&&(短路与),||(短路或)
  • 注意事项:逻辑运算符一般用于连接boolean类型的表达式或者值。
  • 结论:
    &(与):有false则false,左边为false,右边依然执行。
    &&(短路与):左边为false,则右边不执行,与&的最终结果都一样。
    |(或者):有true则true
    ||(短路或):左边为true,则右边不执行。
    ^(异或):相同则为false,不同为true
(4)位运算符
  • 位运算符:&(与),|(或),^(异或),~(按位取反),<<(左移),>>(右移),>>>(无符号右移)。
    - 注意事项:位运算是用补码进行
  • 用法:
    &:有0则0
    |:有1则1
    ^:相同则0,不同为1
    <<:左移,空位补0,被移除的高位丢弃。>>:被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。>>>:被移位二进制最高位无论是0或者是1,空缺位都用0补。
  • 举例:
    10<<3 00001010 移后 01010000 结果为80
    -25>>3 11101000 移后 11111101,原码是10000011,所以是-4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值