Java基础——常量、进制、变量、数据类型及运算符

本文深入讲解Java中的常量、变量、数据类型及运算符,覆盖整数、实数、字符、字符串、布尔和空常量,详细介绍变量定义、类型转换、算术、赋值、关系、逻辑和位运算符。

今天呢阿Q就带大家了解一下java的常量、变量、数据类型以及运算符的相关知识。

常量

(1)在程序的运行过程中,其值是不可以发生改变的量。
(2)常量的分类:字面值常量,自定义常量(将在后边的讲解中给出),字面值常量又分为

​ 整数常量:12,-23

​ 实数常量:12.5,-65.43

​ 字符常量:‘a’,‘A’,‘0’

​ 字符串常量:“hello”

​ 布尔常量:true,false

​ 空常量:null
(3)常量可以直接被输出。

进制

(1)是一种进位的方式。X进制,表示逢x进1。
(2)java中整数常量的表示

  • 二进制 由0,1组成。以0b开头。JDK7以后的新特性。

  • 八进制 由0-7组成。以0开头。

  • 十进制 由0-9组成。默认就是十进制。

  • 十六进制 由0-9,A-F(不区分大小写)组成,以0x开头。

(3)计算机存储数据时用高低电平(高低位)来存储的 也就是 二进制的 1 和 0,1个就二进制数据被称为位 (bit)
​ 1byte = 8 bit;
​ 1Kb = 1024byte;
​ 1Mb = 1024Kb;
​ 1Gb = 1024Mb;
​ 1Tb = 1024Gb;
(4)进制转换:进制转换详情见链接https://jingyan.baidu.com/article/495ba84109665338b30ede98.html,掌握方法即可,因为电脑的计算器都带有进制转换功能,此处不再赘述。

变量

(1)程序的运行过程中,在指定范围内发生改变的量。
(2)格式:
​ 数据类型 变量名 = 初始化值;

​ 变形格式:
​ 数据类型 变量名;
​ 变量名 = 初始化值;

​ 举例:
​ 方式1: byte b = 10;

​ 方式2: byte b;
​ b = 10;
(3)注意事项
​ A:在一对{}内,是不能重复定义变量的。
​ B:赋值的时候,尽量不要超出范围。
​ C:定义长整数型,必须加后缀:l或者L
​ D:定义单精度类型的时候,必须加后缀:f或者F
​ E:变量要先初始化再使用(在使用之前初始化即可)

(4)代码举例:

class VariableDemo {public static void main(String[] args){//定义字节变量byte b = 12;System.out.println(b);//定义短整型变量short s = 1234;System.out.println(s);//定义整数变量int i = 12345;System.out.println(i);//定义长整型变量long l = 12345678912345L;System.out.println(l);//这是1//定义单精度类型(7-8位的有效数字)float f = 12.5F;System.out.println(f);//定义双精度类型(15-16位的有效数字)double d = 12.5;System.out.println(d);//定义字符类型char c = 'a';//重新赋值,Java中的字符采用的编码是Unicode编码。占用2个字节。
​		c = '中';System.out.println(c);//定义布尔类型boolean flag = true;System.out.println(flag);}}
数据类型

(1)分类:

​ 基本类型:4类8种。
​ 引用类型:类,接口,数组
(2)基本类型
​ 整型:
​ byte 1字节
​ short 2字节
​ int 4字节
​ long 8字节
​ 浮点型:
​ float 4字节
​ double 8字节
​ 字符型:
​ char 2字节
​ 布尔型:
​ boolean 不明确。可以认为是1个字节。

注意:

​ 整数默认是int类型。long类型需要加L或者l后缀。
​ 浮点数默认是double类型。float类型需要加F或者f后缀。

(3)类型转换
​ 在运算的过程中,一般要求类型一致。如果遇到不一致的情况,就会有类型转换问题
​ 1:boolean类型不参与转换。
​ 2:隐式转换(从小到大)
​ byte,short,char – int – long – float – double
​ 注意:long是8个字节,float是4个字节。
​ long是整数,float是浮点数,整数和浮点数的存储规则不一样。
​ long的范围是小于float的。
​ 2^63 10^38 > (23)38 > 2^114
​ 3:强制转换(从大到小)
​ 如果你明确知道数据是可以表示,就可以用强制类型转换。
​ 格式:(转换后数据类型)变量或者值
​ 一般情况下,根本不推荐使用强制类型转换。

​ 4:代码

class VariableDemo2{public static void main(String[] args){//定义两个类型不一致变量int x = 10;byte b = 20;//把两个变量进行加法运算byte b2 = x + b;System.out.println(b2);//定义两个类型一致的变量int x = 10;int y = 20;int z = x + y;System.out.println(z);//隐式转换byte a = 10;int b = a;System.out.println(b);
​				
​		//隐式转换float f = 12.5F;double d = a+b+f;System.out.println(d);//强制类型转换int i = 10;byte b2 = (byte)i;System.out.println(b2);
	}}

(4)类型转换的原理(理解即可)
​ 比如把int类型强制转成了byte类型 就是把32位的int的后8位截取出来 再换算成人类能看得懂的源码

(5)字符类型对应的ASCII码表
​ 数字字符和英文字符,包括中文字符,他们都是我们用于交流的数据,而计算机中的数据
​ 底层是二进制的,所以,它不可能直接存储我们使用的这些数据。
​ 必须想办法,把他们变成我们能够存储的数据在计算机中存储。
​ 这样的话,就出了编码表。
​ 编码表:
​ 就是字符及其对应的数值组成的一张表。

​ 最常见的编码表:ASCII码表。(详见resource里面)

class VariableDemo5 
	{
		public static void main(String[] args) 
		{
			System.out.println('a');
			System.out.println('a'+1);//98-1=97	--	'a'
			System.out.println('a'+3);//100
			System.out.println('A'+1);//66-1=65 --	'A'
			System.out.println('0'+1);//49-1=48 --  '0'
		}
	}
运算符

(1)就是把常量和变量连接的符号,一般参与运算使用。
(2)分类:
​ 算术运算符
​ 赋值运算符
​ 关系运算符
​ 逻辑运算符
​ 位运算符
​ 三元运算符
(3)算术运算符
​ +,-,*,/,%,++,–

​ +:正号,加法,字符串连接符。
​ System.out.println(“5+5=” + 5 + 5); //5+5=55
​ System.out.println(5 + 5 + “=5+5”); //10=5+5

​ /:整数相除,结果只能是整数。
​ 如果你想要小数,那么参与运算的数据必须有一个是浮点数类型。

​ %:取余,即整除之后的余数。

​ ++/–:
​ i++ :++放后面 就是说 i++ 这个整体是1,也就是说如果把 i++ 赋给一个 int z 那么z还是1
​ 而这会儿i已经是2了
​ int i = 1;
​ System.out.println(i++);// 1
​ System.out.println(i);// 2
​ ++i:++放后面 就是说 ++i 这个整体是2,也就是说如果把 ++i 赋给一个 int z 那么z还是2
​ 这会儿i是2
​ int j = 1;
​ System.out.println(++j);// 2
​ System.out.println(j);// 2

(4)赋值运算符
​ =,+=,-=,*=,/=,%=

​ int a = 10;
​ 把10赋值给int类型的变量a。

​ a += 20 即为 a = a + 20

​ 注意事项:
​ a = a + 20;
​ a += 20;
​ 结果是等价的,理解不是等价的。

​ 因为+=这种运算符,内含了强制类型转换功能。
​ 比如:
​ short s = 2;

​ s+=3;
​ 等价于
​ s = (short)(s + 3)
(5)关系运算符
​ ==,!=,>,>=,<,<=

​ 特点:关系运算符的结果都是boolean类型。
​ 请千万注意:== 不要写成 =

(6)逻辑运算符
​ &,|,!,^,&&,||

​ &:有false则false
​ |:有true则true
​ !:true变false,false变true
​ ^:相同false,不同true

​ &&:有false则false
​ ||:有true则true

​ &&和&的区别是:如果左边有false了,右边将不再执行。
​ ||和|的区别是:如果左边有true了,右边将不再执行。

​ &&和|| 验证举例:

		int a = 10;
		int b = 20;
		//System.out.println((a++ > 10) & (b-- > 10));//a=11,b=19
		System.out.println((a++ > 10) && (b-- > 10)); //a=11,b=20
		System.out.println(a);
		System.out.println(b);

(7)位运算符
​ 位运算符:是针对二进制数据的运算。
​ & 按位与
​ | 按位或
​ ^ 按位异或
​ ~ 按位取反

	<<	左移	左边的高位舍弃,右边空出的部分补齐0。
	>>	右移	如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1
	>>>	无符号右移 无论最高位是1还是0,左边被移空的高位都填入0
注意:向左移动或者向右移动,其实就是把数据增大或者缩小2的指定次幂。

(8)条件运算符也叫三目运算符
​ 格式:
​ 条件表达式?表达式1:表达式2

​ 执行流程:
​ 根据条件表达式返回的是true还是false,决定结果是什么。
​ 如果是true,就把表达式1作为结果。
​ 如果是false,就把表达式2作为结果。

好了今天就先说到这了,明天继续。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿Q说代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值