Java必修课是零基础Java学习者的入门课程,涵盖了Java初学者应该掌握的所有核心知识。在本节课中,最课程创始人、微软MVP陆敏枝将从JDK\JRE\JVM基础概念、Java关键字、标识符、数据类型等知识点展开讲解,旨在为初学者打下深厚的基础知识。
课程基本信息
开课时间:每周四下午:14:00-15:30
主讲人:云栖社区专家,陆敏枝
回顾视频链接:
https://yq.aliyun.com/video/play/1492
欢迎下载或在线观看
本节课程重点内容:
一、JDK、JRE、JVM
Java是一次编译,多平台运行离不开JDK、JRE、JVM。在jjava的安装目录,包含jdk和jre两个子目录:
直播视频中将详细讲解这两个文件夹下的具体内容。
1、JDK
JDK是整个JAVA的核心,是Java Development ToolKit(Java开发工具包)的缩写,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API,包括rt.jar)。
JDK有以下三种版本:
·JavaSE,standard edition,标准版,是我们通常用的一个java版本;
·JavaEE, enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序;
·JavaME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序。
2、JRE
JRE也就是我们说的JAVA平台,是Java Runtime Enviromental(java运行时环境)的缩写。所有的Java程序都要在JRE下才能运行。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
3、JVM
JVM 的全称是Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚拟出来的计算机系统,也就是说在Windows和Mac等系统上为加载Java程序又构造了一个新的操作系统。
1、JDK、JRE、JVM三者之间的关系
通过JDK、JRE、JVM,Java程序可以实现一次编译,四处运行。三者之间存在包含关系:JDK包含JRE,JRE包含JVM,具体关系参考下图:
在程序开发中,我们是利用JDK(调用JAVA API)开发Java程序后;通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码;在JRE上运行这些JAVA字节码;然后由JVM解析这些字节码,映射到CPU指令集或OS的系统调用,这样一来,Java程序就运行起来了。
二、关键字
关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字。它用来表示一种数据类型或程序的结构等,关键字不能用作变量名、类名、方法名或参数。java目前共有50个关键字,其中"const"和"goto"这两个关键字在Java语言中并没有具体含义(未被使用):
1、关键字总览
·基本数据类型(9):boolean、char、byte、short、int、long、float、double、null
·变量引用(2):super、this(面向对象时使用)
·类、方法、变量修饰符(15):class、abstract(类、方法)、interface、enum、static(程序块、方法、内部类、变量)、final(类、方法、常量)、extends、implements、new、strictfp、synchronized、transient、volatile、native、void
·程序结构(11):if、else、for、do、while、switch、case、continue、break、return、instanceof
·java包(2):import、package (用于封装、整理代码)
·访问控制(4):private(属性、方法)、default(类、属性、方法)、protected(属性、方法)、public(类、属性、方法)
·异常处理(5):try、catch、throw、throws、finally
·未使用(2):goto、const
注:在第一讲中HelloWorld程序中的String并非关键字,它是一个类。
三、标识符
标识符:除关键字外,程序员在写程序的时候自定义的一些名字(HelloWorld、String等),标识符可以应用在类名、变量、方法(函数)名、包名上。标识符必须遵循的规则:(1)由26个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成;(2)不能以数字开头;(3)不能是关键字;(4)区分大小写;(5)标识符的可以为任意长度;如果不符合上面5个规则之一,程序编译报错。
Java中的标识符命名规范,具体如下:
1、包名
多个单词组成时所有字母小写(例:package com.zuikc),最好是域名倒过来,便于其他人调用;
2、类名和接口
多个单词组成时所有单词的首字母大写(例:HelloWorld);
3、变量名和函数名
多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:add、result、userName)。
4、常量名
多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:圆周率:PI)
注意:只是一种约定,如果规范性不好,不会引起错误;命名规范最好做到见名知意。
四、数据类型简述
对于Java程序,可以看作数据 + 逻辑,在现实生活中,数据是有类型的,比如人的姓名,是字符串,人的年龄,是整数。因此,java也提供了对数据类型的支持,Java的数据类型分为两大类:基本类型和引用类型。
1、基础类型
基本类型是java语言内置的数据类型,分为四类八种:
·整数(byte、short、int、long)
·小数(float、double)
·字符类型(char)
·布尔类型(boolean)
2、引用类型
对于上节课我们涉及的String,它虽然是Java内置的,但并不属于基本类型,它是对字符类型(char)的组合封装;与String类型相似,对基本类型进行组合封装或加上逻辑的类型,在Java提供的JDK中还有成千上万种。这些对基本类型进行封装组合的类型称之为引用类型。除JDK中已经提供的引用类型外,使用者也可以创建自己的引用类型,如HelloWorld类型,一旦申明为class,它就是一个引用类型。引用类型在后面的课程中,我们将会详细的讲解。
本节课主要讲解基础类型:
(1)byte
byte 数据类型是8位(bit)、有符号的,以二进制补码表示的整数;最小值是-128(-2^7)、最大值是127(2^7-1)、默认值是0;byte变量占用的空间只有 int 类型的四分之一;
例子:byte a = 10,byte b = -5。
注:bit,电脑中用于存储数据的最小单位,包括0、1。
(2)short
short 数据类型是 16 位、有符号的以二进制补码表示的整数;最小值是-32768(-2^15)、最大值是32767(2^15 - 1);一个short变量是int型变量所占空间的二分之一;默认值是0;例子:short s = 1000,short r = -2000。
(3)int
int 数据类型是32位、有符号的以二进制补码表示的整数;最小值是-2,147,483,648(-2^31)、最大值是2,147,483,647(2^31 - 1);默认值是0;例子:int a = 100000,int b = -200000。
(4)long
long 数据类型是64 位、有符号的以二进制补码表示的整数;最小值是-9,223,372,036,854,775,808(-2^63)、默认值是0L、最大值是
9,223,372,036,854,775,807(2^63 -1);这种类型主要使用在需要比较大整数的系统上。例子:long a = 100000L,Long b = -200000L。
(5)float
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;float 在储存大型浮点数组的时候可节省内存空间;默认值是0.0f;例子:float f1 = 234.5f。
(6)double
double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型; 默认值是0.0d;例子:double d1 = 123.4。
(7)boolean
boolean数据类型表示一位的信息,布尔值,只有两个取值:true 和 false; 默认值是false;例子:boolean one = true。
(8)char
char类型是一个单一的 16 位 Unicode 字符;背后存储的是整数(无符号整数),最小值是\u0000(即为0);最大值是\uffff(即为65,535);
char 数据类型可以储存任何字符;例子:char letter = 'A'。
下面我们通过实际代码来查看下不同基础数据类型的SIZE和最值等,这里要注意:每一个基本类型对应一个它在jdk中的引用类型。
public class TypeTester{ public static void main(String[] args){ System.out.println("byte 二进制位数:" + Byte.SIZE);//Byte是byte引用类型 System.out.println("byte 最小值:" + Byte.MIN_VALUE); System.out.println("byte 最大值:" + Byte.MAX_VALUE); byte byteTemp = 5; System.out.println("byte 例子:" + byteTemp); System.out.println(); System.out.println("short 二进制位数:" + Short.SIZE);//Short是short的引用类型 System.out.println("short 最小值:" + Short.MIN_VALUE); System.out.println("short 最大值:" + Short.MAX_VALUE); short shortTemp = 50; System.out.println("short 例子:" + shortTemp); System.out.println(); System.out.println("int 二进制位数:" + Integer.SIZE);//Integer是int的引用类型 System.out.println("int 最小值:" + Integer.MIN_VALUE); System.out.println("int 最大值:" + Integer.MAX_VALUE); int intTemp = 50; System.out.println("int 例子:" + intTemp); System.out.println(); System.out.println("long 二进制位数:" + Long.SIZE);//Long是long的引用类型 System.out.println("long 最小值:" + Long.MIN_VALUE); System.out.println("long 最大值:" + Long.MAX_VALUE); long longTemp = 50; System.out.println("long 例子:" + longTemp); System.out.println(); System.out.println("float 二进制位数:" + Float.SIZE);//Float是float的引用类型 System.out.println("float 最小值:" + Float.MIN_VALUE); System.out.println("float 最大值:" + Float.MAX_VALUE); float floatTemp = 50; System.out.println("float 例子:" + longTemp); System.out.println(); System.out.println("double 二进制位数:" + Double.SIZE);//Double是double的引用类型 System.out.println("double 最小值:" + Double.MIN_VALUE); System.out.println("double 最大值:" + Double.MAX_VALUE); double doubleTemp = 50; System.out.println("double 例子:" + doubleTemp); System.out.println(); System.out.println("boolean 值1:" + Boolean.TRUE);//Boolean是boolean的引用类型 System.out.println("boolean 值2:" + Boolean.FALSE); boolean boolTemp = true; //flase System.out.println("boolean 例子:" + boolTemp); System.out.println(); System.out.println("char 二进制位数:" + Character.SIZE);// Character是char的引用类型 System.out.println("char 最小值:" + (int)Character.MIN_VALUE); System.out.println("char 最大值:" + (int)Character.MAX_VALUE); char charTemp = '2'; System.out.println("char 例子:" + (int)charTemp); System.out.println(); } }
注:Boolean不存在SIZE、MIN_VALUE、MAX_VALUE属性。
上一讲回顾
在第一讲中,我们讲解了JDK下载、环境变量配置、Java语言是什么以及如何编写、运行第一个Java程序,并根据该程序讲解了Java程序的结构。
课程介绍
本套课程是零基础Java学习者的入门课程,涵盖了Java初学者应该掌握的所有核心知识,并由最课程创始人、微软MVP陆敏枝主讲。课程内容包括了基本语法、运算符、流程控制、面向对象、Java API、IO流、多线程、反射与代理。旨在通过本次课程,在对Java这门编程语言有初步的了解的基础上为后续学习高级课程打下坚实的基础。