今天呢阿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将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。