0
点赞
收藏
分享

微信扫一扫

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作为结果。


举报

相关推荐

0 条评论