小白Java笔记——数据类型
2017-11-28 18:08
232 查看
一、数据类型分类
之前说过Java是强类型语言,意思是所有的变量必须先声明后使用;指定类型的变量只接受与之匹配类型的值。
声明变量很简单,只要定义变量类型和变量名即可:
说明一下“变量”:编程的本质是对内存中数据的访问和修改。我们需要一种机制来访问或者修改内存中的数据,这种机制就是变量。每个变量都代表某一小块内存。我们对变量赋值就是把数据装入内存。通俗的理解,变量就是一种容器,来装不同类型的数据的。
变量的作用范围:成员变量和局部变量。
定义变量类型可以是Java支持的所有类型。
Java语言支持的类型:基本类型和引用类型
1.基本类型:boolean类型和数值类型(又分为整数型和浮点型)
2.引用类型:类、接口、数组类型和特殊的null类型。指的是对一个对象(包括数组和实例两种)的引用。实际上引用类型就是一个指针,只是Java语言里不再使用指针的说法。
注意:空引用只能被转换成引用类型,不能转换成基本类型,所以不要把null值赋给基本数据类型的变量。
二、基本数据类型
(一)整数
int(-2^31~2^31-1)常用的整数类型,如果未指定类型,默认是int类型,所以有以下几点注意:
整数值的4种表示方式:十进制、二进制、八进制和十六进制
Java对二进制的支持:
代码中变量binVall3定义的是32位二进制整数时,最高位是符号位:1代表-,0代表+;负数在计算机是以补码形式存在,因此要转换成原码。
联系前面所说:
(二)字符型
字符集的概念:给所有的字符编号组成总和。因为计算机无法保存电影、音乐、字符…..计算机只能保存二进制码,因此需要把他们全都转换成二进制码。因为对于保存字符简单,所以就直接对字符进行编码,当要保存时,就将对应的字符的编号进行二进制的转换即可。
字符型必须用单引号括起来
三种表现形式:1.直接用单个字符表示字符型值,如‘A’、’9’;
2.通过转义符表示特殊字符,如‘\n’;
3.直接使用Unicode值表示字符型值,如‘\uXXXX’
由于计算机保存字符的时候,保存的是对应的编号,所以char的类型可以直接作为整数值来使用,相当于16位的无符号整数,表述范围为0~65535.
结果是:
Java语言没有提供表示字符串的基本数据类型,而是通过String类表示字符串,需要用双引号括起来。
(三)浮点型
类型:float(单精度浮点数,4字节、32位)和double(双精度浮点数,8字节、64位)。
表示的形式:1.十进制形式。如5.12、0.512,必须有一个小数点,否则就当成int类型;
2.科学计数法:5.12e2(就是5.12x10的2次方)。只有浮点类型的数值才能用科学计算方法。
Java语言默认是double类型,如果要当成float类型,则必须加F或f。
三个特殊的浮点数值:正无穷大(POSITIVE_INFINITY)、负无穷大(NAGATIVE_INFINITY)和非数(NaN)。
注意只有浮点数除以0才可以得到正负无穷大,当然非数也适用,否则会出现报错。
具体例子:
结果:
出现的错误:
解决:涉及到下一个知识点类型的转换,详细的以后说,这里修改把float变成double,因为本来就是想定义一个double类型。
(四)数值下面使用下划线分隔
作用:更直观的查看数值多的位数
(五)布尔型
只能用字母表示的true和false,占用8位。
结果是true true;
从结果上可以得出啊,虽然说其他基本类型数值不能转换成为boolean型,但字符串”true”和”false”可以间接的通过一个boolean值和字符串进行连接运算,那么boolean值可以转换成字符串。
这里插入一个自己的理解:
如刚才那个 String str = true+”“;
=后面有true是boolean类型的,如果要将自己赋值给前面的String类型的str变量,就不仅要将自己的值还要将自己的类型都转换成与String类型相符的,因此true需要转换成字符串类型才能进行赋值。
控制的流程:
1.if条件控制语句;
2.while循环控制语句;
3.do循环控制语句;
4.for循环控制语句;
5.三目运算符(?:)
之前说过Java是强类型语言,意思是所有的变量必须先声明后使用;指定类型的变量只接受与之匹配类型的值。
声明变量很简单,只要定义变量类型和变量名即可:
type varname[ = 初始值];
说明一下“变量”:编程的本质是对内存中数据的访问和修改。我们需要一种机制来访问或者修改内存中的数据,这种机制就是变量。每个变量都代表某一小块内存。我们对变量赋值就是把数据装入内存。通俗的理解,变量就是一种容器,来装不同类型的数据的。
变量的作用范围:成员变量和局部变量。
定义变量类型可以是Java支持的所有类型。
Java语言支持的类型:基本类型和引用类型
1.基本类型:boolean类型和数值类型(又分为整数型和浮点型)
2.引用类型:类、接口、数组类型和特殊的null类型。指的是对一个对象(包括数组和实例两种)的引用。实际上引用类型就是一个指针,只是Java语言里不再使用指针的说法。
注意:空引用只能被转换成引用类型,不能转换成基本类型,所以不要把null值赋给基本数据类型的变量。
二、基本数据类型
(一)整数
int(-2^31~2^31-1)常用的整数类型,如果未指定类型,默认是int类型,所以有以下几点注意:
//1.下面代码正确,系统会自动把56当成byte类型处理 byte a = 56; //2.下面代码错误,系统不会把999999999999当成long类型,即使超出int范围,所以出现错误 long bigValue = 999999999999; //3.下面是正确表示,需要用l或者L强制转换,建议用L方便识别,不与I混淆 long bigvalue2 = 999999999999L; //4.下面是正确的,在int的表数范围内,直接赋给long变量,Java依然会当成int处理,但是int可以自动类型转换到long类型 long demo = 999999999;
整数值的4种表示方式:十进制、二进制、八进制和十六进制
Java对二进制的支持:
public class IntegerValTest{ public static void main(String[] args){ int binVall = 0b110010100; byte binVall2 = 0B01101001; int binVall3 = 0B10000000000000000000000000000011; System.out.println(binVall); System.out.println(binVall2); System.out.println(binVall3); } }
//结果是: 404 105 -2147483645
代码中变量binVall3定义的是32位二进制整数时,最高位是符号位:1代表-,0代表+;负数在计算机是以补码形式存在,因此要转换成原码。
联系前面所说:
/* 定义一个8位的二进制整数,数值默认占的是32位(int),因此是正数 只是强制转换的时候换成byte溢出,变成了-23 */ byte binVal4 = (byte)0b11101001; /* 定义一个32位的二进制整数,最高位是1, 由于加了L因此转换成long类型,占64位,因此第32位就不是符号位 所以是正数 */ long binVal5 = 0B10000000000000000000000000000011L;
(二)字符型
字符集的概念:给所有的字符编号组成总和。因为计算机无法保存电影、音乐、字符…..计算机只能保存二进制码,因此需要把他们全都转换成二进制码。因为对于保存字符简单,所以就直接对字符进行编码,当要保存时,就将对应的字符的编号进行二进制的转换即可。
字符型必须用单引号括起来
三种表现形式:1.直接用单个字符表示字符型值,如‘A’、’9’;
2.通过转义符表示特殊字符,如‘\n’;
3.直接使用Unicode值表示字符型值,如‘\uXXXX’
由于计算机保存字符的时候,保存的是对应的编号,所以char的类型可以直接作为整数值来使用,相当于16位的无符号整数,表述范围为0~65535.
public class CharTest{ public static void main(String[] args){ char aChar = 'a';//直接指定单个字符作为字符值,输出就是a char enterChar = '\t';//使用转义符 char ch = '\u9999';//使用Unicode编码 System.out.println(ch); char feng = '疯';//定义一个疯字作为字符值 int fengValue = feng;//直接将char变量当成int变量来用 System.out.println(fengValue); char c = 97;//直接把在char表数范围内的int数值赋给char变量 System.out.println(c); } }
结果是:
香
30127
a
Java语言没有提供表示字符串的基本数据类型,而是通过String类表示字符串,需要用双引号括起来。
String s = "沧海月明珠有泪,蓝田玉暖日生烟";
(三)浮点型
类型:float(单精度浮点数,4字节、32位)和double(双精度浮点数,8字节、64位)。
表示的形式:1.十进制形式。如5.12、0.512,必须有一个小数点,否则就当成int类型;
2.科学计数法:5.12e2(就是5.12x10的2次方)。只有浮点类型的数值才能用科学计算方法。
Java语言默认是double类型,如果要当成float类型,则必须加F或f。
三个特殊的浮点数值:正无穷大(POSITIVE_INFINITY)、负无穷大(NAGATIVE_INFINITY)和非数(NaN)。
注意只有浮点数除以0才可以得到正负无穷大,当然非数也适用,否则会出现报错。
具体例子:
public class FloatTest{ public static void main(String[] args){ //观察下面af的变化 float af = 5.2345556f; double af1 = 5.2345556; System.out.println(af); System.out.println(af1); double a = 0.0; float af3 = -5.2f; System.out.println(af/a);//正无穷大 System.out.println(af3/a);//负无穷大 System.out.println(a/a);//非数 System.out.println(0/0);//抛出异常 double c = Double.NEGATIVE_INFINITY; float d = Float.NEGATIVE_INFINITY; System.out.println(c==d);//float和double的无穷大相等 System.out.println(a/a==Float.NaN);//两个非数不相等 System.out.println(6.0/0==55.0/0);//所有正无穷大相等,适用于负无穷 } }
结果:
5.2345557 5.2345556 Infinity -Infinity NaN Exception in thread "main" java.lang.ArithmeticException: / by zero at FloatTest.main(FloatTest.java:12) true false true
出现的错误:
错误: 不兼容的类型: 从double转换到float可能会有损失 float af1 = 5.2345556;
解决:涉及到下一个知识点类型的转换,详细的以后说,这里修改把float变成double,因为本来就是想定义一个double类型。
(四)数值下面使用下划线分隔
作用:更直观的查看数值多的位数
int binVal = 0B1000_0000_0000_0000_0000_0000_0000_0000; double pi = 3.14_15_92_65_36;
(五)布尔型
只能用字母表示的true和false,占用8位。
public class BooleanTest{ public static void main(String[] args){ boolean b1 = true; System.out.println(b1); String str = true+""; System.out.println(str); } }
结果是true true;
从结果上可以得出啊,虽然说其他基本类型数值不能转换成为boolean型,但字符串”true”和”false”可以间接的通过一个boolean值和字符串进行连接运算,那么boolean值可以转换成字符串。
这里插入一个自己的理解:
如刚才那个 String str = true+”“;
=后面有true是boolean类型的,如果要将自己赋值给前面的String类型的str变量,就不仅要将自己的值还要将自己的类型都转换成与String类型相符的,因此true需要转换成字符串类型才能进行赋值。
控制的流程:
1.if条件控制语句;
2.while循环控制语句;
3.do循环控制语句;
4.for循环控制语句;
5.三目运算符(?:)
相关文章推荐
- Java基础学习笔记(一)基本数据类型
- Java学习笔记(一) Java基础以及数据类型介绍
- java学习笔记二——数据类型
- (JAVA SE 学习笔记)Java.SE.第003讲.原生数据类型使用陷阱.Pitfall.of.Primitive.Data.Type
- Java基础学习笔记(一)基本数据类型
- java学习笔记三(Java数据类型)
- Java笔记:第2章 数据类型
- java学习笔记---数据类型、运算符和控制语句
- My_Java之笔记(2)-基本数据类型对象包装类
- java核心技术学习笔记2---基本数据类型
- [笔记][Java 4 Android][001~006] Java4android 环境配置、变量、基本数据类型
- java学习笔记(二) ----基本数据类型应用
- 黑马程序员J_ava学习笔记_Java中的基本数据类型转换详解
- 浪潮优派培训Java笔记:第2章 数据类型
- Java自学笔记之数据类型,常量与变量
- [张龙老师Java课程笔记]Java SE第二课 原生数据类型
- Java复习笔记----变量定义、数据类型转换
- Java学习笔记---2.Java标识符和基本数据类型
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- Java笔记之语言基础_基本数据类型