JAVA基本数据类型和注释
一、注释
1、注释的概念
注释是程序中给人看的提示信息,会被编译器忽略;在程序编译和执行过程中不会有任何影响,仅仅在代码阅读时提供提示信息。
2、注释的形式
基本语法://注释的内容 a、行注释
解释:其中双斜线之后到当前行结尾的内容被注释掉了
b、块注释
基本语法:/* … */
解释:则/* 和 */之间的内容被注释掉,可以跨多行注释 块注释在使用时,禁止嵌套使用。
c、文档注释
基本语法:/**...*/
则/** 和 */之间的内容被注释掉,可以跨多行注释 文档注释在使用时,禁止嵌套使用;文档注释通常用来声明一个类的方法属性的功能,文档注释在通过javadoc命令生成文档时可以被提取成文档的一部分。
实验:编写一个类,具有文档注释,通过文档提取工具生成文档
/** 这是一个代表人的类 */
public class Person{
//声明了一个类,名叫Person
public static void main(String args[]){
/* 床前明月光 疑是地上霜 举头望明月 低头思故乡 */
System.out.println("hello world~");
}
2)通过javadoc命令,提取文档
3)查看提取文档
二、进制
1、进制的概念
数字在累计时,进位的机制称之为进制。
a、十进制
逢十进一:0 1 2 3 4 5 6 7 8 9 10 11 …
b、二进制
计算机可以处理很多不同类型的数据,但是在计算机的底层,最终是对数字的存储和处理;基于计算机硬件是实现的方便,计算机底层存储和处理数据都是以二进制形式进行的。
二进制:逢二进一 0 1 10 11 100 101 110 111 1000 …
c、八进制
由于人看二进制非常不习惯,且二进制和十进制之间的转换比较麻烦,因此人们提出了八进制和十六进制。八是二的三次幂,即三位二进制对应一位八进制,非常便于转换。
八进制:逢八进一 0 1 2 3 4 5 6 7 10 11...
d、十六进制
十六是二的四次幂,即每四位二进制对应一位十六进制,非常便于转换。
十六进制:逢十六进一 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11..
2.进制之间的转换
a、十进制转二进制
方法:通过除2取余计算十进制的二进制表示形式。
b、二进制转十进制
c、八进制转二进制
将每一位八进制转换为二进制拼接到一起即可。
d、二进制转八进制
由后向前,每三位转换为一个八进制数,拼接即可
e、十六进制转二进制
将每一位十六进制转换为二进制拼接到一起即可。
f、二进制转十六进制
由后向前,每四位转换为一个十六进制,拼接即可
3、二进制的单位
在计算机内部,每一位的二进制称之为一个比特位(bit),简称比特,也称之为二进制位。
而每八位二进制组合在一起,称之为一个字节(Byte);
每1024个Byte,称之为一个KB,每1024个KB,称之为一个MB;
每1024个MB,称之为一个GB,每1024个GB,称之为一个TB;
每1024个TB,称之为一个PB;
市场上卖的硬盘通常采用1000形式,二非1024形式,因此一个TB的硬盘只有800GB左右。带宽100Mb其实指的是100Mbit转换为Byte其实只有12.5MB;
三、计算机中的数据表示形式
1、信息的二进制表示形式
计算机可以处理很多不同类型的数据,比如,数字、文本、图片等,看似计算机什么都能处理,其实计算机处理任何数据都是将数据转换为二进制来进行存储和处理的。
文字也需要转换为二进制后才能在计算机底层处理,这是通过文字码来是实现的。
所谓的文字码表是一个映射关系,将字符和对应的二进制数字映射起来。
2、码表
码表就是字符到二进制的映射关系。
四、JAVA基本数据类型
1、直接量
a、数字直接量
java支持十进制、二进制、八进制、十六进制代表数字直接量;其中,二进制、八进制和十六进制需要通过不同的前缀开头。
b、字符直接量
Java中通过单引号将字符括起来代表一个字符直接量。
一个字符直接量只能代表一个字符,不可以在一个字符直接量中写入多个字符,不允许有空的字符直接量。
c、布尔直接量
java中具有布尔类型直接量,代表逻辑判断时的真和假;布尔类型的直接量只有两个:
2、数据类型的概述
java语言可以处理各种各样不同类型的数据,在java语言中通过数据类型来表征不同数据的类型,这就是所谓的数据类型的概念。
java中的数据类型主要分为基本数据类型和引用数据类型(复杂数据类型)
3、基本数据类型
a、概述
byte | 字节型 | 1字节 |
short | 短整型 | 2字节 |
int | 整型 | 4字节 |
long | 长整型 | 8字节 |
float | 单精度浮点数 | 4字节 |
double | 双精度浮点数 | 8字节 |
char | 字符型 | 2字节 |
boolean | 布尔类型 | 1字节 |
1)byte类型
字节型数字,占用一个字节。
可以表示-2^7~2^7-1(-128~127)范围的数。其二进制表示形式中,第一个二进制为符号位,表示正负,0为正,1为负。其他二进制位表示数值。注意:负数时,第一位也算在内。
2)short类型
代表短整型数字。占用两个字节。表示-2^15~2^15-1(-32768~32767)。
其二进制表示形式中,第一二进制表示正负,0为正,1为负,其他二进制位表示数值;
和byte类似,在最大的数上+1或者在最小的数上-1都会造成溢出。
3)int类型
代表整形数字。占用四个字节。表示-2^31~2^31-1(-2147483648~2147483647)。是java中用的最多的数字类型。java中的数字直接量如果不指定,默认都是int类型。
其二进制表示形式中,第一二进制表示正负,0为正,1为负,其他二进制位表示数值;
和byte类似,在最大的数上+1或者在最小的数上-1都会造成溢出。
4)long类型
代表长整型。占用八个字节。表示-2^63~2^63-1(-9223372036854775808~9223372036854775807)。所有long型数据直接量都要在数字后加L表示。
其二进制表示形式中,第一二进制表示正负,0为正,1为负,其他二进制位表示数值;和byte类似,在最大的数上+1或者在最小的数上-1都会造成溢出。
5)float类型
代表单精度浮点数。占用4个字节。所有float型数据直接量都要在数字后加F表示。
其二进制表示形式中,第一二进制表示正负,0为正,1为负,其他二进制位表示数值;和byte类似,在最大的数上+1或者在最小的数上-1都会造成溢出。
浮点数在进行运算时,可能存在精度不准确问题,且没有办法完全避免。比如:以下例子输出的值就不准确。
6)double
代表双精度浮点数。占用8个字节。所有double型数据直接量都要在数字后加d表示。
如果浮点数没有加f或者d,默认就是double。浮点数也可以使用科学计数法表示。例如:2.131e3.
和byte类似,在最大的数上+1或者在最小的数上-1都会造成溢出。
浮点数在进行运算时,可能存在精度不准确问题,且没有办法完全避免。
7)char
代表字符类型。占用2个字节。
可以代表0~2^16 - 1。即:0~65535个字符。
对于无法直接显示的符号支持通过转义字符来间接表示。
转义字符以反斜杠开始,后面跟一个普通字符来表示,不同转义字符有不同含义:
其中比较重要的是:\n、\r、\t、\\、\'、\''、\uxxx
8)boolean
代表布尔类型。占用一个字节。
4、引用数据类型(复杂数据类型)
引用类型数据,通过引用在栈中存放的真正目标数据在堆中的内存地址,来进行存储。使用时,通过引用找到栈中存储的内存地址后,最终通过地址在堆中找到真正的目标数据。
包括:数据,对象等。
5、类型转换
java中的数据具有数据,其转换规则为从小到大自动转换。
a、自动类型转换
1、六个和数字相关的基本类型,可以自动由小到大进行类型转换。但反过来就不行。*注意:在进行自动转换浮点数时,可能存在精度丢失。
经典面试题:
byte b1 = 2;
byte b2=3;
byte b3= b1 + b2;//编译不过去,因为b1引入后会转换为int类型。
2、char类型可以根据ASCII码表自动转换为int类型。数值类型在ASCII码表有效字符范围内也可以自动转换为char。
b、手动类型转换
可以在数值类型之间,数值类型和char类型之间进行,实现由大到小的转换。
通过小括号包裹目标类型修饰要转换的数据实现类型转换。
浮点型转整形,直接舍弃小数位;大转小时,大数大于小类型可以表示的最大范围时,则直接截取大数中最后的需要字节作为小类型数据使用。