2.1. 数据类型

一. 字面值、编码方式

1. 字面值

关于字面值

  • 10/100
  • 3.14
  • “Abc”
  • ‘a’
  • True、false

字面值就是数据。 字面值是 Java 源程序的组成部分之一。包括标识符和它的关键字,他们都是 Java 源程序的组成部分。

数据在现实世界中是分类别的,所以数据在计算机编程语言中也是有类型的:【数据类型】

  • 10、100 属于整数型
  • 3.14 属于浮点型
  • True、false 属于布尔型
  • “Abc”、“张广荣” 属于字符串型
  • ‘A’、‘人’属于字符型

注意: Java 语言中所有字符串型字面值必须用双引号括起来,双引号是半角。 Java 语言中所有字符型字面值必须用单引号括起来,单引号是半角。

二. 变量

1. 什么是变量?

变量本质上说是内存中的一块空间,这块空间“有数据类型”、“有名字”、“有字面值”。
变量包含三部分:数据类型、名称、字面值【数据】
变量是内存中存储数据的最基本的单元。

2. 数据类型的作用?

不同的数据类型底层会分配不同大小的空间。
数据类型是指导程序在运行阶段应该分配多大的内存空间。

3. 变量要求

变量中存储的具体的“数据”必须和变量的“数据类型”一致,当不一致的时候编译报错

4. 声明/定义变量的语法格式

数据类型变量名
数据类型:概念在第三部分。
Eg:int 整数型
变量名:只要是合法的标识符就行。规范中要求:首字母小写,后面每个单词首字母大写。

5. 变量声明之后怎么赋值

语法格式: 变量名=字面值
要求:字面值的数据类型必须和变量的数据类型一致。
=等号是一个运算符,叫做赋值运算符,赋值运算符优先运算等号右边的表达式,表达式执行结束之后的结果赋值给等式左边的变量。

6. 声明和赋值可以放到一起完成

int i=10

7. 变量赋值之后,可以重新赋值,变量的值可以变化

int i=10;  
System.out.println(i);  
i=20;  
System.out.println(i);  
i=100;  
System.out.println(i);

8. 有了变量的概念之后,内存空间得到了重复的使用

int i=10;  
System.out.println(i);  
System.out.println(i);  
System.out.println(i);  
…

9. 通常访问一个变量包括两种访问形式

第一种:读取变量中保存的具体数据 get/获取
第二种:修改变量中保存的具体数据 set/设置
I=10; //set
System.Out.Println (i); //get

10.  变量在一行可以声明多个

11. Java 中的变量必须先声明,再赋值,才能访问。

Int i; //程序执行到这里,内存空间并没有开辟出来,变量 i 并没有初始化。所以没有赋值之前是无法访问的。

12. 关于 Java 变量的作用域

什么是作用域?
变量的作用域,其实描述的就是变量的有效范围。在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了。

变量的作用域只要记住一句话:出了大括号就不认识了。

13. 关于变量的分类

关于变量声明的位置来分类:
局部变量: 在方法体中声明的变量。
成员变量: 在方法体【类体之内】声明的变量叫做成员变量。
在不同的作用域当中,变量名可以相同。
在同一个作用域当中,变量名不能重名。

三. 数据类型

1. 数据类型的作用是什么

程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
数据类型的作用是指导 JVM 在运行程序的时候給该数据分配多少空间。

2. Java 中的数据类型包括两种

基本数据类型
引用数据类型

3. 关于基本数据类型

基本数据类型包括四大类八小种: 第一类:整数型 (byte,short,int,long) 第二类:浮点型 (float,double) 第三类:布尔型 (boolean) 第四类:字符型 (char)

4. 字符串“abc”不属于基本数据类型,属于 “引用数据类型” ,字符属于基本数据类型:

字符串使用双引号 “ ” 字符使用单引号‘’

5. 八钟基本数据类型各自占用空间大小是多少?

基本数据类型占用空间大小 【单位:字节】取值范围
byte1-128~127
short2-32768~32767
int4-2147483648~2147483647
long8-263~263-1
float4有效位 6~7 位
double8有效位 15 位
boolean1true,false
char20~65535
6 计算机在任何情况下都只能识别二进制。例如:只认识 010101010100101…

文字与二进制通过字符编码的方式进行对照转换,最先出现的是 ASCII 码【采用一个字节编码】

支持简体中文的编码方式是 GB 2312< GBK< GB 18030 支持繁体中文:< big5 > 后来出现了一种方式统一了全球所有文字,容量较大,这种编码方式叫做:Unicode 编码 Unicode 编码方式有多种具体的实现:

UTF-8 UTF-16 UTF-32 Java 语言采用的编码方式是 unicode 编码方式,所以“标识符”可以用中文。

四. Char

关于八种基本数据类型的默认值关于八种基本数据类型的默认值

数据类型默认值
byte,short,int,long0
float,double0.0
booleanfalse【在 C 语言中 true 是 1,false 是 0】
char\u 0000
成员变量没有手动赋值系统会默认赋值【局部变量则不会】  
八钟基本数据类型的默认值都是一切向0看齐。
一个中文占用2个字节,char类型正好是2个字节  
所以Java中的char类型变量可以存储一个中文字符  
“ab”是字符串不能用单引号括起来

五. 转义字符(\)

\ :反斜杠在 Java 语言中具有转义功能

\n : 换行符
System.out.println与 print 的区别:println输出之后换行,print表示输出,但是不换行。
\t : 制表符 ,即Tab键
\ ’ : 普通的单引号
\ \ : 普通的反斜杠
\ " : 普通的双引号

怎样在控制台输出“反斜杠字符”?

char k='\\';
System.out.println();

第一个反斜杠具有转义功能,将后面的反斜杠转义为 p 普通的反斜杠字符
结论:因此在 Java 中两个反斜杠代表一个普通的反斜杠字符

怎样在控制台输出一个普通的单引号?

char a='\''; / / 反斜杠具有转义功能,将第二个单引号转换成普通的单引号字符,第一个单引号和最后一个单引号配对。
System.out.println(a);

六. 整数型

  1. Java 语言当中的“整数型字面值”被默认当做 int 处理。要让这个“这个整数型字面值”被当做 long 类型处理的话,需要在“整数型字面值”后面添加 1/L,建议使用大写的 L。


  2. Java 语言当中的整数型字面值有三种表现方式:


第一种方式:十进制【是一种缺省默认的方式】 int i=10
第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】 int i=010
第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】 int i=0x10

Long y=2147483648 L

long y=2147483648
2147483648是一个过大整数,被当做int类型4个字节处理,但是这个字面值超过int类型范围
解决方法:
在字面值后面添加L,将其当做long类型处理,y是类型变量,以上程序不存在类型转换。

七. 精度损失

计算机二进制有三种表示形式:

原码
反码
补码

计算机在任何情况下底层表示和存储数据的时候采用了补码形式。

正数的补码:和原码相同。
负数的补码:负数的绝对值对应的二进制所有二进制位取反,再加1

当一个整数字面值没有超过 byte,short,char 的取值范围,这个字面值可以直接赋值给 byte,short,char 类型的变量。这种机制被 SUN 允许了,目的是为了方便程序员编程。

char cc=65535 //通过
char cc=65536 //编译报错

八. 浮点型

float 单精度【4个字节】
double 双精度【8个字节,精度较高】

在 Java 语言当中,所有的浮点字面值【3.0】,默认被当做 double 类型来处理。 要想该字面值当做 float 类型来处理,需要在字面值后面添加 F/f

注意: Double 和 float 在计算机内部二进制存储的时候存储的都是近似值。 在现实世界当中有一些数字是无限循环的,列如:3.3333333… 计算机资源是有限的,用有限的资源存储无限的数据只能存储近似值。

九. 布尔型

关于布尔型数据类型:boolean

在Java语言当中boolean类型只有两个值:true、false,没有其他值。
不像C语言当中,0和1可以表示假和真。
在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1

布尔类型在实际开发当中非常需要,经常使用逻辑运算和条件控制语句当中。

十. 类型转换

关于基本数据类型之间的互相转换:

转换规则:

  1. 八种基本数据类型当中除布尔类型之外剩下的 7 种类型之间都可以互相转换。


  2. 小容量向大容量转换,称为自动类型转换,容量从小到大排序:
    Byte < short ,char < int < long < float < double
    注: 任何浮点类型不管占用多少个字节,都比整数型容量大。
    Char 和 short 可表示的种类数量相同,但是 char 可以取更大的正整数。


  3. 大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。


  4. 当整数字面值没有超出 byte,short,char 的取值范围,可以直接赋值给 byte,short,char 类型的变量。


  5. Byte,short,char 混合运算的时候,各自先转换成 int 类型再做运算。


  6. 多种数据类型混合运算,先转换成容量最大的那种类型再做运算。


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇