Java 数据类型

标识符

        标识符是用来给变量、方法、类以及包进行命名的。标识符是由字母、下划线、美元符号$和数字的任意组合,且开头不能是数字。Java标识符大小写敏感,不可以是Java关键字/保留字。

        标识符的使用规范:

        表示类名的标识符每个单词首字母大写,如:GoodBoy,GoodMan等。

        表示方法和变量的标识符:第一个单词小写。从第二个单词开始首字母大写,如:

        eatFood()、goodMan等。


保留字/关键字

一、具体的保留字

goto、const

二、具体的关键字(51个)

1.访问修饰符(3个)

public、protected、private

作用:用来修饰类(接口、抽象类)、方法、属性、构造方法、常量、主函数

2.类、接口、抽象类(9个)

class、interface、abstract——定义

extends——继承类、implements——实现接口

new——新建一个对象、super——调用父类方法、this——指代当前对象

instanceof——通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

3.数据类型(13个)

void——没有返回值

byte、short、int、long——整型数据

float、double——浮点型数据

char——字符型数据

boolean——判断型数据

enum——枚举

null、true、false——值类型

4.线程(2个)

synchronized——线程同步(修饰方法、代码块,方法、代码块的同步)

volatile——线程同步(修饰属性,属性的同步)

5.异常(5个)

throw——抛出方法代码中的异常给方法自身。使用位置:方法中间

throws——抛出方法中的异常给调用者。使用位置:方法外部

try——捕获{}中代码是否有发生异常

catch——处理try捕获的异常

finally——不管有没有异常发生都会执行的代码块

6.返回(1个)

return

7.循环、条件(10个)

if、else、switch、case、break、default、continue、while、do、for

8.包(2个)

package、import

9.瞬时的(1个)

transient

10.断言(1个)

assert

11.调用底层代码(C\C++)(1个)

native

12、不可变的——final(1个)

修饰属性、常量、局部变量、参数——作用:数据是不可改变的

修饰类——作用:修饰的类不能被继承

修饰普通方法——作用:修饰的方法不能被重写

13.静态的——static(1个)

修饰属性、常量

修饰内部类

修饰普通方法

作用:所有使用static关键字修饰的内容会最先执行。static修饰的内容在内存中只有唯一的一份(存储在静态内存空间中)。

14.格式规范——strictfp(1个)

修饰类、接口或方法。

修饰方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。

修饰类或接口时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。

严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
 


Java数据类型

        Java数据类型分为两大类:基本数据类型和引用数据类型,引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!

 一、整型

类型占用存储空间表数范围
byte1字节-2^7 ~2^7 -1   (-128~127)
short2字节-2^15~2^15 -1  (-32768~32767)
int4字节-2^31~2^31 -1  约21亿
long8字节-2^63~2^63  -1 

        整形常量的四种表示形式:

                十进制,如:99,-500,0

                八进制,要求以0开头,如:015

                十六进制,要求以0x或0X开头,如:0x15b

                二进制,要求0b或0B开头,如:0b01110011

Java的整型常数默认为int型,声明long型可以加 ' l ' 或 ' L '。

long类型常数的写法及变量的声明

long a = 55555555;    //编译成功,在int表示的范围内(21亿内)。

long b = 55555555555;  //不加L编译错误,已经超过int表示的范围。

会报错,我们需要修改代码为 long b = 55555555555L;

二、浮点型

类型占用存储空间表数范围
float4字节-3.403E38~3.403E38
double8字节-1.798E308~1.798E308

1. float类型又称作单精度类型,尾数可以精确到7位有效数字。

2. double类型表示的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。

3. 浮点常量默认类型是double,要改成float可以后面加F或f。

4. 浮点型不精确,不要用于比较,这时要使用BigDecimal进行运算和比较

三、字符型

字符型在内存中占2个字节,在Java中用单引号来表示字符常量。例如 'A' 是一个字符,"A"表示含有一个字符的字符串。

Java中字符串不是基本数据类型,而是一个类。String类,其实是字符序列,本质是char字符组成的数组。

转义字符

转义字符含义
\b退格
\n换行

\r

回车

\t

制表符(Tab)
\"双引号
\'单引号
\\反斜杠

四、布尔型

        boolean类型有两个常量值,true和false。

        在内存中占一个字节或者4个字节,不可以使用0或者非0的整数代替true或者false。

        boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

运算符

二元运算符的运算规则

整型运算:

1、如果两个操作数有一个为long,则结果也为long。

2、没有long时,结果为int。即使操作数全为short,byte,结果也是int。

浮点运算:

1、如果两个操作数有一个是double,则结果也为double。

2、只有两个操作数都是float,则结果才为float。

取模运算:

其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-1=1。

数据类型转换

自动类型转换

        1、 自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。红色实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。

        2、可以将整型常量直接赋给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围即可。

强制类型转换

        1、强制类型转换又称为造型(cast),用于强制转换数值的类型,可能损失精度。

        2、当一种类型强制转换成另一种类型,而超出了目标的表数范围,就会被截断成为一个完全不同的值。

int x = 300;

byte bx = (byte)x;      //值为44

        3、不能在布尔类型和任何数值类型之间进行转换

 类型转换常见问题

int money = 1000000000;          //10亿

int years = 20;         

int tatal = money*year;

System.out.println("total="+total);   //返回total是负数,超过了int的范围   

long total1= money*year;

System.out.println("total1="+total1); 

//返回的total1仍是负数,默认是int,因此结果会转换成i值,再转换成long。但是已经发生了数据丢失

long total2 = money*((long)years);

System.out.println("total2="+total2);

//返回的total2正确,先将一个因子变成long,整个表达式发生提升。全部用long来计算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值