java数据类型及相关知识点

变量

数据类型

定义

数据类型,表示的是一组数据的集合,和基于该数据集合的一组合法操作。

数据类型的分类

基本数据类型
  1. 整形 int long short byte
  2. 浮点型 float double
  3. 字符型 char
  4. 布尔型 boolean

数值类型 前7种

非数值类型 boolean

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19dlXIrk-1681192817034)(在这里插入图片描述
)]

引用数据类型

只要不是四类八种基本数据类型,那么它都是引用数据类型。

标识符

定义:为了方便使用起的名字

需要标识符起名字的常见结构:包, 类, 方法 ,变量

在Java当中,同包下是没有同名类的,不管这个class是public修饰还是非public的!

标识符的语法要求

通过以上标识符的语法要求,做几个总结:

  1. 标识符不能以数字开头,但可以由数字组成。

  2. 0xC0是一个十六进制数,Unicode 字符集中编号为0xC0后面的字符,几乎包含了世界上绝大多数非英语国家的文字字符。

    这里面当然包括中文,韩文,日文等。所以标识符的命名从语法上来说,直接用中文是完全可以的。

  3. Unicode 字符集兼容ASCII码表,Unicode 字符集中前128个字符就是ASCII码表中的字符。所以Unicode 字符集中编号为0xC0以及它后面的所有符号是不含很多常用英文字符的,比如:英文逗号,英文句号,空格,回车等。

当然,标识符不能是Java中的关键字和保留字,并且标识符严格区分大小写

变量的使用

常量定义

在程序运行过程中,其值不会发生改变的量,是绝对不会发生改变的量才能称之为常量。

分类

  1. **字面值常量,在Java代码中,所有直接写值的量都是字面值常量。**包括:
    1. 整数常量:直接写在代码中的整数都是。例如1、2、3等。
    2. 小数常量:直接写在代码中的小数都是。例如1.1、1.2、1.3等。
    3. 字符常量:直接写在代码中的,使用单引号引起来的字符都是。例如’A’、'a’等。
    4. 布尔常量:直接写在代码中的布尔值,只有true和false两个。
    5. 字符串常量:直接写在代码中的,使用双引号引起来的字符串都是。例如"HelloWorld"、"hello"等
    6. 空常量:空常量是引用数据类型独有的一种取值,只有null一个。(后面会讲,这里先记一下)
  2. 自定义常量,通过语法自由地定义一个常量在代码中使用。(面向对象再讲)

目前我们知道的常量只有字面值常量,它是比较简单的,了解即可

变量定义

在程序运行过程中,可能会发生变化的量

不同种类型的变量,它的使用方式是不同的

局部变量

代码块:由若干条Java语句组成,并且用一对大括号括起来的结构,叫做代码块。

局部变量的定义:

在Java中,把定义在局部位置的变量称之为“局部变量”。

局部位置的概念:在Java中,代码块的"{}"内部的位置都可以认为是局部位置。

比如:

  1. 方法体的大括号内部是典型的局部位置(也算代码块),比如main方法的大括号内部:

    public static void main(String[] args) {
    // 局部位置
    }
    
  2. 类体当中直接定义的大括号内部(代码块当中)

    class A {
    // 代码块  
    	{   // 局部位置  
    	}
    }
    
  3. 以上两个位置中继续嵌套的"{}"。也就是代码块中继续嵌套代码块,这时注意作用域即可。

类体,也就是类名后面的大括号不是代码块。类体当中不输于局部位置,类体当中直接定义的变量也不是局部变量。

局部变量的特点除了需要定义在局部位置,就是它的使用需要经过以下两步:

声明局部变量:声明局部变量的目的是告诉编译器,局部变量的数据类型和变量的名字。

Java编译器一旦发现代码中存在仅声明的局部变量,就会自动忽略掉它,也就是说编译后的class文件中是不存在未初始化局部变量的。

初始化局部变量

注意事项

  1. Java当中的整数字面值常量,默认当作int处理。假如你想使用字面值整数定义一个long类型变量,那么该字面值常量的后面应该加上一个"L"区分(禁止使用小写"l")。
  2. java当中的小数字面值常量,默认当作double处理。假如你想使用字面值小数定义一个float类型变量,那么该字面值常量的后面应该加上一个"F"或"f"区分。
  3. 定义一个变量是有它的作用范围的,这个范围通常用{}来界定,同样一个{}不能有同名变量。
  4. 虽然Java语法允许一行定义多个相同数据类型的变量,但规范的Java代码禁止这样做!

细节问题

String 类比较不能用"==‘’,用equest方法

float和double都不适合用于精确计算的场合,尤其不适合用于货币运算。

基本数据类型的数据类型转换

自动类型转换

  1. 自动数据类型发生在"小取值范围"转换为"大取值范围"的数据类型转换之间。
  2. char类型比较特殊,在参与数值类型的自动类型转换时,是编码值参与了转换。

强制类型转换

  1. 从"大取值范围"的数据类型转换到"小取值范围"的数据类型。
  2. "大变小"的强制类型转换极易造成数据溢出导致数据失真,除非特别有必要,一般情况下不要做强制类型转换。

表达式类型提升

  1. byte、short、char之间不互相转换,一旦发生运算,一律自动转换为int进行运算,结果是int
  2. char类型比较特殊,在参与数值类型的计算时,是编码值参与了运算。
  3. String作为字符串类型,也可以使用" + “在表达式中参与运算,称之为"字符串的拼接”。 任何表达式一旦有字符串拼接运算,那么结果必然是String类型
  4. 只要表达式中存在任一变量,那么表达式的最终结果数据类型就遵循"表达式的类型提升"。

总结

  1. 八种基本数据类型只有boolean不能类型转换。
  2. 多种数据类型混合在一起进行运算,先全部提升为"最大取值范围"的数据类型,再进行计算
  3. byte、short、char使用的时候尤其注意取值范围,若参与运算都会自动提升到int。**
  4. “小取值范围”—>"大取值范围"称之为自动类型转换,不需要写代码处理,排序是:byte < short(char) < int < long < float < double~
  5. 大取值范围"—>"小取值范围"称之为强制类型转换,必须要显式写代码处理,否则会编译报错,

整数变量的特殊性

  1. 对于整数字面值常量(包括常量的运算)而言,因为它的值一定不会发生变化,而且整型数据值的位数十分容易判断,所以编译器能够自动判断整型常量是否在接收数据类型的范围内。
  2. 小数字面值常量不具有这种特点。因为浮点数本身就是一种近似表示方法,用double和float分别表示0.1完全是两个数,类似下列行为都是不能通过编译的:

字面值常量(包括常量的运算)而言,因为它的值一定不会发生变化,而且整型数据值的位数十分容易判断,所以编译器能够自动判断整型常量是否在接收数据类型的范围内。
2. 小数字面值常量不具有这种特点。因为浮点数本身就是一种近似表示方法,用double和float分别表示0.1完全是两个数,类似下列行为都是不能通过编译的:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值