什么是程序?程序就是对一堆数字的鼓捣。专业的说就是:
程序(Program) = 数据结构(Data Structure)+ 算法(Algorithm)。
数据类型在数据结构中的定义:一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。
所以我们要编写程序,就要捣鼓数据结构,数据结构的最基本组成就是基本数据类型。
Java中的八大基本数据类型 Java是一种强类型语言。强类型语言:也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。来自百度百科 - 强类型语言
必须为每一个变量声明一种类型。Java中,一共有8中基本类型(primitive type),其中4种整型(int、short、long、byte)、2种浮点类型(float、double)、1中字符类型(char)、1种布尔类型(boolean)。
布尔:乔治·布尔(George Boole,1815.11.2 ~ 1864),19世纪最重要的数学家之一。由于其在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值,用于表示真和假。来自百度百科 - 布尔。
浮点:这里的点指的是“小数点”,可以上下浮动小数点,从而表达更大范围的实数。 整型(int、short、long、byte)整型用于表示没有小数部分的数值。
允许是负数。
Java提供4种整型,具体如下:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2147483648 - 2147483647 (整好超过20亿) |
short | 2字节 | -32768 - 32767 |
long | 8字节 | -9223372036854775808 - 9223372036854775807 |
byte | 1字节 | -128 - 127 |
// Java 中的八大数据类型 - 实例
public class PrimitiveType {
public static void main(String[] args) {
System.out.println(Integer.TYPE + "的取值范围:" + Integer.MIN_VALUE + " - " + Integer.MAX_VALUE);
System.out.println(Short.TYPE + "的取值范围:" + Short.MIN_VALUE + " - " + Short.MAX_VALUE);
System.out.println(Long.TYPE + "的取值范围:" + Long.MIN_VALUE + " - " + Long.MAX_VALUE);
System.out.println(Byte.TYPE + "的取值范围:" + Byte.MIN_VALUE + " - " + Byte.MAX_VALUE);
System.out.println("长整形Long的后缀L: " + 9223372036854775807L);
System.out.println("十六进制0xCAFE = " + 0xCAFE);
System.out.println("八进制010 = " + 010);
System.out.println("二进制0b1001 = " + 0b1001);
System.out.println("加下划线表示一百万1_000_000 = " + 1_000_000);
}
}
结果如下:
程序解读:
程序中的Integer、Short、Long、Byte属于基本类型int、short、long、byte的包装类,暂时只需要知道,不需要太深入了解。
程序中的“” + “”,是字符串的连接方法,相当于把多个字符串连接为单个字符串。
浮点类型(float、double)浮点类型用于表示有小数部分的数值。
Java提供2种浮点类型,具体如下:
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 1.17549435E-38 - 3.4028235E38 (有效位数7 - 8位) |
double | 8字节 | 2.2250738585072014E-308 - 1.7976931348623157E308 (有效位数15位) |
double表示的数值精度是float类型的两倍(有人称之为双精度类型)。绝大部分的程序都采用double类型。在很多情况下,float类型的精度很难满足需求。
float类型的数值有一个后缀F或f(如3.14F)。没有后缀F的浮点数值默认为double类型。当然,也可以在浮点数值后面添加D或d(如3.14D)。
需要了解:浮点类型又3个特殊的值。正无穷大、负无穷大、NaN(不是一个数字)。如:一个正整数除以0的结果为无穷大。计算0/0或者负数的平方根的结果为NaN。(了解即可)。
浮点数值不适用于无法接受舍入误差的金融计算中。如:2.0 - 1.1的浮点运算结果为:0.899999999999999,而不是0.9。这种舍入误差的主要原因是浮点数值采用二进系统表示,二进制系统中无法精确的表示分数1/10。就想十进制无法精确表示分数1/3一样。这个时候需要使用BigDecimal类,暂时了解即可。
实际编程举例说明:
System.out.println(Float.TYPE + "的取值范围:" + Float.MIN_NORMAL + " - " + Float.MAX_VALUE);
System.out.println(Double.TYPE + "的取值范围:" + Double.MIN_NORMAL + " - " + Double.MAX_VALUE);
System.out.println("Float的后缀F:" + 3.14F);
System.out.println("正无穷大:" + Double.POSITIVE_INFINITY);
System.out.println("负无穷大:" + Double.NEGATIVE_INFINITY);
System.out.println("NaN:" + Double.NaN);
System.out.println("2.0 - 1.1 = " + (2.0 - 1.1));
结果如下:
字符类型(char) char类型原本用于表示单个字符。不过,现在情况有些Unicode字符需要两个char值。 char类型的字面量值要用两个单引号括起来。如'A'
表示一个字符常量,"A"
表示包含一个字符A的字符串。
char值可以标识十六进制值,范围为\u0000 - \uffff。如\u2111标识注册符号(™)。
除了转义序列\u之外,还有一些用于表示特殊字符的转义序列。
转义序列 | 名称 | Unicode值 | 转义序列 | 名称 | Unicode值 |
---|---|---|---|---|---|
\b | 退格 | \u0008 | \" | 双引号 | \u0022 |
\t | 制表 | \u0009 | \’ | 单引号 | \u0027 |
\n | 换行 | \u000a | \\ | 反斜杠 | \u005c |
\r | 回车 | \u000d |
// \u000a is a new line
这个注释会在程序编译的时候产生语法错误,因为\u000a
代表一个换行,你的程序实际上就变成了:
// (换行)
is a new line // 这行会报错
再比如:
// Look inside c:\users
这个也会报错,因为\u后面未跟着4个十六进制数。
实际编程举例说明:
System.out.println("字符类型:" + 'A');
System.out.println("注册符号:" + '\u2122');
System.out.println("圆周率符号:" + '\u03C0');
System.out.println("反斜杠:" + '\\');
结果如下:
想要了解Unicode的话,可以自行先了解一下。后面会用专门的篇章就行讲述。 布尔类型(boolean) boolean类型只有两个值:false 和 true,用来判定逻辑条件。 整型值和布尔值之间不能相互转换。实际编程举例说明:
System.out.println("布尔类型true:" + true);
System.out.println("布尔类型false:" + false);
if (true)
System.out.println("逻辑判断为真,这句话将被打印。");
if (false)
System.out.println("逻辑判断为假,这句话不会被打印。");
结果如下:
程序解读:if 语句为java的条件判断语句,括号内为真时执行下面一句话,括号内为假时,跳过下面一句话。后续会专门讲解,暂时先作为了解。
忠告 在我们之后的编程中很容易习惯用int、double这些类型,但是用的时候一定要过一下脑子,是否需要使用long,是否可以使用float。 要分清楚’A’和"A"的区别,虽说看着结果都一样,但本质上一个是字符类型,一个是字符串。 捐赠若你感觉读到这篇文章对你有启发,能引起你的思考。请不要吝啬你的钱包,你的任何打赏或者捐赠都是对我莫大的鼓励。
静心事成 原创文章 29获赞 22访问量 3万+ 关注 私信 展开阅读全文