云栖社区专家系列课——Java必修课第二讲

简介: Java必修课是零基础Java学习者的入门课程,涵盖了Java初学者应该掌握的所有核心知识。在本节课中,最课程创始人、微软MVP陆敏枝将从JDK\JRE\JVM基础概念、Java关键字、标识符、数据类型等知识点展开讲解,旨在为初学者打下深厚的基础知识。

Java必修课是零基础Java学习者的入门课程,涵盖了Java初学者应该掌握的所有核心知识。在本节课中,最课程创始人、微软MVP陆敏枝将从JDK\JRE\JVM基础概念、Java关键字、标识符、数据类型等知识点展开讲解,旨在为初学者打下深厚的基础知识。


课程基本信息

开课时间:每周四下午:1400-1530

主讲人:云栖社区专家,陆敏枝

回顾视频链接:

https://yq.aliyun.com/video/play/1492

欢迎下载或在线观看

 

本节课程重点内容:

一、JDKJREJVM

Java是一次编译,多平台运行离不开JDKJREJVM。在jjava的安装目录,包含jdkjre两个子目录:

d2bcc8bae77659d3552fde0951213200956c46bc 

直播视频中将详细讲解这两个文件夹下的具体内容。

1、JDK

JDK是整个JAVA的核心,是Java Development ToolKit(Java开发工具包)的缩写,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API,包括rt.jar)。

JDK有以下三种版本:

·JavaSEstandard edition,标准版,是我们通常用的一个java版本;

·JavaEEenterpsise edtion,企业版,使用这种JDK开发J2EE应用程序;

·JavaMEmicro edtion,主要用于移动设备、嵌入式设备上的java应用程序。

2、JRE

JRE也就是我们说的JAVA平台,是Java Runtime Enviromental(java运行时环境)的缩写。所有的Java程序都要在JRE下才能运行。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

3、JVM

JVM 的全称是Java Virtual Mechinal(JAVA虚拟机)JVMJRE的一部分,它是一个虚拟出来的计算机系统,也就是说在WindowsMac等系统上为加载Java程序又构造了一个新的操作系统。

1、JDKJREJVM三者之间的关系

通过JDKJREJVMJava程序可以实现一次编译,四处运行。三者之间存在包含关系:JDK包含JREJRE包含JVM,具体关系参考下图:

72e9e4be50a1880db431ffd80db8fa881f4937fc 

在程序开发中,我们是利用JDK(调用JAVA API)开发Java程序后;通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码;在JRE上运行这些JAVA字节码;然后由JVM解析这些字节码,映射到CPU指令集或OS的系统调用,这样一来,Java程序就运行起来了。


二、关键字

关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字用来表示一种数据类型或程序的结构等,关键字不能用作变量名、类名、方法名或参数。java目前共有50个关键字,其中"const""goto"这两个关键字在Java语言中并没有具体含义(未被使用)

1关键字总览

678cf1e744eee96b3240f4956fdd61b2c8372029 

·基本数据类型(9)booleancharbyteshortintlongfloatdoublenull

·变量引用(2)superthis面向对象时使用

·类、方法、变量修饰符(15)classabstract(类、方法)interfaceenumstatic(程序块、方法、内部类、变量)final(类、方法、常量)extendsimplementsnewstrictfpsynchronizedtransientvolatilenativevoid

·程序结构(11)ifelsefordowhileswitchcasecontinuebreakreturninstanceof

·java(2)importpackage (用于封装、整理代码)

·访问控制(4)private(属性、方法)、default(类、属性、方法)、protected(属性、方法)、public(类、属性、方法)

·异常处理(5)trycatchthrowthrowsfinally

·未使用(2)gotoconst

注:在第一讲中HelloWorld程序中的String并非关键字,它是一个类。


三、标识符

标识符:除关键字外,程序员在写程序的时候自定义的一些名字HelloWorldString等),标识符可以应用在类名、变量、方法(函数)名、包名上。标识符必须遵循的规则:(126个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成;(2不能以数字开头;(3不能是关键字;(4区分大小写;(5标识符的可以为任意长度;如果不符合上面5个规则之一,程序编译报错。

Java中的标识符命名规范,具体如下:

1包名

多个单词组成时所有字母小写(例:package com.zuikc),最好是域名倒过来,便于其他人调用;

2类名和接口

多个单词组成时所有单词的首字母大写(例:HelloWorld)

3变量名和函数名

多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:addresultuserName)。

4常量名

多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:圆周率PI

注意:只是一种约定,如果规范性不好,不会引起错误;命名规范最好做到见名知意


四、数据类型简述

对于Java程序,可以看作数据 + 逻辑在现实生活中,数据是有类型的,比如人的姓名,是字符串,人的年龄,是整数。因此java也提供了对数据类型的支持Java的数据类型分为两大类:基本类型和引用类型。

1、基础类型

基本类型是java语言内置的数据类型,分为四类八种:

·整数(byteshortintlong)

·小数(floatdouble)

·字符类型(char)

·布尔类型(boolean)

2、引用类型

对于上节课我们涉及的String,它虽然是Java内置的,但并不属于基本类型,它是对字符类型(char)的组合封装;与String类型相似,对基本类型进行组合封装或加上逻辑的类型,在Java提供的JDK中还有成千上万种。这些对基本类型进行封装组合的类型称之为引用类型。JDK中已经提供的引用类型外,使用者也可以创建自己的引用类型,如HelloWorld类型,一旦申明为class,它就是一个引用类型。引用类型在后面的课程中,我们将会详细的讲解。

本节课主要讲解基础类型:

1byte

byte 数据类型是8位(bit)、有符号的,以二进制补码表示的整数;最小值是-128-2^7)、最大值是1272^7-1)、默认值是0byte变量占用的空间只有 int 类型的四分之一;

例子:byte a = 10byte b = -5

注:bit,电脑中用于存储数据的最小单位,包括01

2short

short 数据类型是 16 位、有符号的以二进制补码表示的整数;最小值是-32768-2^15)、最大值是327672^15 - 1);一个short变量是int型变量所占空间的二分之一;默认值是0;例子:short s = 1000short r = -2000

3int

int 数据类型是32位、有符号的以二进制补码表示的整数;最小值是-2,147,483,648-2^31)、最大值是2,147,483,6472^31 - 1);默认值是0;例子:int a = 100000int b = -200000

4long

long 数据类型是64 位、有符号的以二进制补码表示的整数;最小值是-9,223,372,036,854,775,808-2^63)、默认值是0L、最大值是

9,223,372,036,854,775,8072^63 -1);这种类型主要使用在需要比较大整数的系统上。例子:long a = 100000LLong b = -200000L

5float

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;float 在储存大型浮点数组的时候可节省内存空间;默认值是0.0f;例子:float f1 = 234.5f

6double

double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;

浮点数的默认类型为double类型; 默认值是0.0d;例子:double d1 = 123.4

7boolean

boolean数据类型表示一位的信息,布尔值,只有两个取值:true false; 默认值是false;例子:boolean one = true

8char

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不存在SIZEMIN_VALUEMAX_VALUE属性。

上一讲回顾

在第一讲中,我们讲解了JDK下载、环境变量配置、Java语言是什么以及如何编写、运行第一个Java程序,并根据该程序讲解了Java程序的结构。


课程介绍

本套课程是零基础Java学习者的入门课程,涵盖了Java初学者应该掌握的所有核心知识,并由最课程创始人、微软MVP陆敏枝主讲。课程内容包括了基本语法、运算符、流程控制、面向对象、Java APIIO流、多线程、反射与代理。旨在通过本次课程,在对Java这门编程语言有初步的了解的基础上为后续学习高级课程打下坚实的基础。

相关文章
|
4月前
|
设计模式 运维 并行计算
GitHub上的677页Java性能优化笔记火了!竟是阿里调优专家肝出的
Java是目前应用最为广泛的软件开发平台之一。随着Java及Java社区的不断壮大,Java早已不再是一门简单的计算机语言了,它更是一个平台、一种文化、一个社区。
|
Java
《阿里特邀专家关键:Java无锁集合代码分析》电子版地址
阿里特邀专家关键:Java无锁集合代码分析
63 0
《阿里特邀专家关键:Java无锁集合代码分析》电子版地址
|
Java Docker 容器
《阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库》电子版地址
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库
207 0
《阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库》电子版地址
|
Java Spring
《云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧》电子版地址
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧
98 0
《云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧》电子版地址
|
人工智能 架构师 前端开发
清华大牛带领20位大厂专家耗时三年整理出这份2000页Java进阶指南
自我介绍: 马士兵教育: 由马士兵老师携手BATJ名师为大家提供java架构师培训,人工智能培训,大数据培训,软件测试培训,Web前端培训,区块链培训等课程,课程均由一线互联网公司技术大牛精心研发,全程项目式教学!
|
机器学习/深度学习 分布式计算 Cloud Native
Java 程序员可以学习的技术方向,精通任何一个都可以成为专家
Hello 大家好,相信大家跟阿粉一样,在成为卓越的Java 程序员的路上从未停止过学习,作为一个 Java 程序员还有很多我们需要学习的东西,特别是在这样一个技术快速发展的时期可能昨天还在流行的技术,转眼就已经落后了。那么在 2021 年已经接近尾声的时候有哪些技术我们可以继续不断的学习呢?
Java 程序员可以学习的技术方向,精通任何一个都可以成为专家
|
Java
华为技术专家深度解析Java线程状态(下)
华为技术专家深度解析Java线程状态
91 0
华为技术专家深度解析Java线程状态(下)
|
Java 调度
华为技术专家深度解析Java线程状态(上)
华为技术专家深度解析Java线程状态
94 0
华为技术专家深度解析Java线程状态(上)
|
NoSQL 安全 网络协议
阿里华为技术专家教你如何实现一个Java连接池?(下)
阿里华为技术专家教你如何实现一个Java连接池?
82 0
阿里华为技术专家教你如何实现一个Java连接池?(下)
|
安全 网络协议 NoSQL
阿里华为技术专家教你如何实现一个Java连接池?(上)
阿里华为技术专家教你如何实现一个Java连接池?
219 0
阿里华为技术专家教你如何实现一个Java连接池?(上)