第一章 开发前言
1.1 Java 语言概述
什么是 Java 语言
Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。所谓编程语言,是
计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。
Java 语言发展历史
1995年Sun公司发布Java1.0版本
1997年发布Java 1.1版本
1998年发布Java 1.2版本
2000年发布Java 1.3版本
2002年发布Java 1.4版本
2004年发布Java 5.0版本
2006年发布Java 6.0版本
2009年Oracle甲骨文公司收购Sun公司,并于2011发布Java 7.0版本
2014年发布Java 8.0版本
2017年发布Java 9.0版本
1.2 计算机基础知识
二进制:二进制数据由0和1组成
十进制数据转成二进制数据:使用除以2获取余数的方式
二进制数据转成十进制数据:使用8421编码的方式
位:一个0或者是一个1就叫做一位(bit) 字节:每逢8位算一个字节,这是计算机当中的【最小存储单位】(Byte)
8个bit(二进制位)0000-0000表示为1个字节,写成1 byte或者1位
1 Byte = 8 bit 1 KB = 1024 Byte 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB 1 PB = 1024 TB 1 EB = 1024 PB 1 ZB = 1024 EB 1 YB = 1024 ZBB。
8 bit = 1 B
1024 B =1 KB
1024 KB =1 MB
1024 MB =1 GB
1024 GB = 1 TB
常用 DOS 命令
启动: Win + R,输入cmd回车
切换盘符: D: Windows当中的文件夹路径不区分大小写
进入文件夹: cd 文件夹名称
返回上一级: cd ..
进入多级文件夹 cd 文件夹1\文件夹2\文件夹3
返回磁盘根路径 cd \
查看当前文件夹 dir
清空屏幕 cls
退出 exit
1.3 java虚拟机
JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的
运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。
跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系 统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM 运行在操作系统上。
JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。
JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具。
我们想要运行一个已有的Java程序,那么只需安装 JRE 即可。
我们想要开发一个全新的Java程序,那么必须安装 JDK 。
1.4 常见数据类型:
public class Variable {
public static void main(String[] args){
//定义字节型变量
byte b = 100;
System.out.println(b);
//定义短整型变量
short s = 1000;
System.out.println(s);
//定义整型变量
int i = 123456;
System.out.println(i);
//定义长整型变量
long l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量
float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
/*其中 long类型:建议数据后加L表示
float类型:建议数据后加F表示。*/
}
}
Java中boolean类型到底占用多少个字节?java规范中,没有明确指出boolean的大小 问题解答:
(1)什么是boolean类型,根据官方文档的描述(http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html):
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。 这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
也就是说,java规范中,没有明确指出boolean的大小。
(2)如果要分大小,那么到底占几个字节呢?通过搜查各类资料,发现有以下3种说法:
1、1个bit(1/8个字节) 理由:boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位算,仅需1位(bit)即可存储, 位是计算机最小的存储单位
2、1个字节 理由:虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位, 实际存储的空间是:用1个字节的最低位存储,其他7位用0填补, 如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。
3、4个字节 理由:在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。 在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值, 在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组, 每个元素boolean元素占8位”。也就是说JVM规范指出boolean当做int处理,也就是4字节, boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
如果认同第三条,那么存在问题:那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。 经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说, 一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面), 32 位 CPU 使用 4 个字节是最为节省的,哪怕你是 1 个 bit 他也是占用 4 个字节。 因为 CPU 寻址系统只能 32 位 32 位地寻址,具有高效存取的特点。
4、It depends on Java virtual machine.这取决于java虚拟机 。
总结:java规范中,没有明确指出boolean的大小。 在《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义, 具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。
所以最后总结:总结:java规范中,没有明确指出boolean的字节大小。