java基本数据类型与运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/82811661

一、java是一门强类型语言

1、所有变量必须先声明后使用。
2、指定类型变量只能接受类型与之匹配的值。
3、整型、字符型、浮点型所有数值类型之间都可以进行自动转换

二、 标识符规则(Java语言是区分大小写的)

Java语言的标识符必须以字母、下划线、美元符¥开头,后面可以跟任意数目的字母、数字、下划线和美元符。
(1)标识符可以由字母、数字、下划线和美元符组成,其中数字不能打头。
(2)标识符不能是Java关键字和保留字,但可以包含关键字和保留字
(3)标识符不能包含空格
(4)标识符只能包含美元符,不能包含@、#等其他字符
**注意:**字母不局限于英文字母,可以包含Unicode字符集支持的字符,比如中文、韩文等

三、数据类型分类

1、不管是哪种变量,定义变量至少需要指定变量类型和变量名两个部分。

2、基本数据类型分类
基本数据类型包含基本类型和引用类型
https://blog.csdn.net/lamp113/article/details/79178842

基本类型
(1)整型:
byte
(1个字节,内存占8位,表数范围:-2的7次方—2的7次方-1)
short
(2个字节,内存占16位,表数范围:-2的15次方—2的15次方-1)
int
(4个字节,内存占32位,表数范围:-2的31次方—2的31次方-1)
long
(8个字节,内存占64位,表数范围:-2的63次方—2的63次方-1)
(2)字符型:char(2个字节)
(3)浮点类型:float(4个字节),double(8个字节)
(4)布尔类型:boolean

注意:
(1)1个字节8位,2的8次方个字符。
(2)直接给出一个整数值默认类型就是int类型。
(3)如果将一个较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或者short类型来处理。
(4)如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应在这个整数值后增加英文字母l或者L作为后缀。通常推荐使用L,因为因为字母l和数字1很容易搞混


byte a=56;
//这个代码是正确的,系统会自动把56当成byte类型来处理
long  bigValue=99999999999999999999;
//这个代码是错误的,因为超出了int表示的范围
long bigValue=999999999999999999999L;
//这个代码是正确的,强制使用long类型

引用类型
(1)类(注意:字符串是一个类)
(2)接口
(3)数组

Java中整数值的4种表示方式
(1)二进制整数:0B或者0b开头
(2)八进制整数:0开头
(3)十六进制整数:0x或0X开头
其中0——15分别以a——f(其中a——f不区分大小写)表示
(4)十进制整数:直接写即可

字符型三种表示方法
(1)直接通过单个字符来指定字符型数值,例如‘A’、‘9’、‘0’等
(2)通过转义字符表示特殊字符型值,例如‘\n’、‘\t’等
(3)直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,其中XXXX代表一个十六进制的整数。
在这里插入图片描述

注意:
(1)char类型的变量、值也可以直接作为整形值来使用,它相当于一个16位无符号整数
(2)java没有提供字符串的基本数据类型,而是通过String类来表示字符串,由于字符串由多个字符组成,因此字符串要使用双引号括起来。

如果一个字符串中包含了单引号、双引号、反斜线,一定要注意应当使用转义字符的表示形式

扫描二维码关注公众号,回复: 3306071 查看本文章

例如:

“c:\codes”得不到期望的结果,因为java会把反斜线当成转义字符,所以应该写成“c:\\codes”
String s="沧海月明珠有泪";
//引用类型的变量;

(3)char类型必须使用单引号括起来,字符串必须使用双引号括起来。

浮点类型
(1)float(4字节,32位,单精度),double(8字节,64位,双精度)
(2)有固定的表数范围和字段长度,字段长度、表数范围都与机器无关,由jvm分配,这样实现了跨平台。
(3)浮点数用二进制数据和科学计数法表示浮点数。浮点数必包含一个小数点否则会被当成int类型数据处理,只有浮点类型的数值才可以使用科学计数法形式表示。
例如:3.14、314.0
5e—3F:5乘10的-3次方,F表示是浮点类型
(4)Java语言的浮点类型默认是double类型,若声明一个float型,需要在数字后面加上f或F。
——double a=12.3; float f=12.3f;
(5)Java中无法精确表示部分实数。
由于Java浮点数使用二进制数据的科学计数法表示浮点数,因此可能不能精确表示一个浮点数。

布尔类型 boolean
(1)取值:true和false
只能取true和false,不能用0或非0整数来代替。
不能与其它基本数据类型的值互相转换。

四、基本数据类型之间的转换

(一)自动类型转换

下图中有一个错误,byte可以自动转为short
在这里插入图片描述

(1)可以把一个int型变量转换为long等表数范围大的变量;
(2)浮点类型float表数的范围比整型long表示的要大(虽然long类型8个字节,float为4个字节),因为float类型可以用科学技术法。
因此表数范围与字节不是正比关系。

例如:
(1) float f=1.0f; √ double d=f;√
float f=1.0;×(因为默认是double类型,大的不能给小的)

(二)强制类型转换
(1)强制类型转换的时候要加强制类型转换符

例如:
double pi=3.1415926;
int p=(int)pi;

(三)注意
在这里插入图片描述

例如1:

char a='a';b='b';
char c=a+b;

这个编译时错误的;因为在前面注意的第二点中,byte、short、char互相之间不转换,用时全部自动转换成int类型。即使是只有chat或者short或者byte,也是在用的时候自动转换成int类型。

因此在用a+b的时候,就已经自动转换成int类型,表数范围大的不能赋值给表数范围小的,因此这段代码是错误的。

改成下面才是对的:

char a='a';b='b';
char c=(char)(a+b);

例如2:

short i=3;
i=i-1;

这段编译的时候回出错,因为原来是short,但是在用的时候变成了int,int类型不能赋值给short类型的。

改成下面的才是对的

short i=3;
i=(short)(i-1);

(四)综上讲解给出例题
在这里插入图片描述

第一个转化为double型运算,是因为混合运算均转化为表数范围大的类型。

在这里插入图片描述

五、运算符

在这里插入图片描述
(1)

在这里插入图片描述

整数/整数=整数,如果将这个整数赋值给一个float类型的变量的话,结果仅仅是整数.0;但是整数/小数 或者 小数/整数 的话,结果会保留小数位的数;

在这里插入图片描述

下面的例子中,会输出a=1,确实是只要+号两边有一个是字符串类型的话,另外一个不管是什么类型都会变成字符串类型的,所以1自动变成“1”,所以输出的是a=1;

(2)

在这里插入图片描述

与C语言中的用法是相同的,++i是先执行加一后使用,i++是先使用后执行加一;

(3)

在这里插入图片描述

注意+=比+要厉害的多,可以进行强制类型转换。因此:
a+=5等价于a=(byte)(a+5);

(4)

在这里插入图片描述

打印出来的是TRUE;

(5)

在这里插入图片描述

&&短路逻辑与,短路也就是因为前面i>3是错误的,之后的i++就不再进行比较和运算了。
&不短路与,不短路就是因为前面i>3是错误的,之后的i++还进行比较和运算
||短路或,短路也就是因为,如果能判出条件的话,后面的不再执行了。
|不短路或,不短路就是因为,即使前面可以判出条件,后面的仍然执行

(6)
在这里插入图片描述

按位与:1与1=1;1与0=0;0与1=0;0与0=0;
按位或:1与1=1;1与0=1;0与1=1;0与0=0;
按位非:取反
按位异或:1与1=0;1与0=1;0与1=1;0与0=0;

例如:
9=1001;8=1000;所以9&8=1000;
9=1001;左移一位是10010=18;
二进制左移一位相当于乘2,十进制左移一位相当于乘10

(7)
在这里插入图片描述

(8)运算符优先级,不确定优先级的时候加()就可以了

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/82811661