云栖社区专家系列课——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这门编程语言有初步的了解的基础上为后续学习高级课程打下坚实的基础。

相关文章
|
6月前
|
监控 网络协议 Java
《Java工程师成神之路》阿里技术专家之作,囊括Java所有知识点!
很多Java程序员一直希望找到一份完整的学习路径,但是市面上很多书都是专注某一个领域的,没有一份完整的大图,以至于很多程序员很迷茫,不知道自己到底应该从哪里开始学,或者不知道自己学习些什么。
|
11月前
|
设计模式 运维 并行计算
GitHub上的677页Java性能优化笔记火了!竟是阿里调优专家肝出的
Java是目前应用最为广泛的软件开发平台之一。随着Java及Java社区的不断壮大,Java早已不再是一门简单的计算机语言了,它更是一个平台、一种文化、一个社区。
|
1月前
|
Java 开发者 UED
Java中的异常处理:从新手到专家
【10月更文挑战第9天】在Java的编程世界中,异常处理是每个开发者必须面对的挑战。本文将引导你从基础的异常理解到高级的处理技巧,通过具体代码示例,展示如何优雅地管理程序中可能出现的错误和异常情况。无论你是刚开始学习Java,还是希望提高你的异常处理能力,这篇文章都将为你提供宝贵的知识和技巧。
|
1月前
|
Java 程序员
Java中的异常处理:从新手到专家
【10月更文挑战第9天】在Java的世界中,异常处理就像是驾驶时的方向盘,掌握它,你就能驾驭代码的运行方向。本文将通过深入浅出的方式,带你了解Java异常处理的奥秘,从基本的try-catch语句到自定义异常类的创建,让你的代码更加健壮和易于维护。
12 2
|
2月前
|
Java UED
Java中的异常处理:从新手到专家
【9月更文挑战第17天】在Java编程世界中,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将通过浅显易懂的语言和实例,带你了解如何在Java中优雅地处理异常。我们将一起探索try-catch块的奥秘,学习如何自定义异常,以及何时应该使用throw和throws关键字。准备好了吗?让我们开始这段旅程,把那些不请自来的编程小怪兽——异常,一一捕获!
|
3月前
|
Java 程序员 开发者
掌握Java异常处理:从新手到专家
在Java的世界中,异常是程序运行中不可忽视的挑战。本文以浅显易懂的语言,引导你认识Java中的异常处理机制,从基础的try-catch语句到深入的自定义异常和最佳实践,让你在遇到运行时错误时能够从容不迫,优雅地处理每一个可能的异常情况。让我们一起走进Java异常的世界,学习如何驯服这些“野性”的错误,让程序更加健壮和可靠。
|
3月前
|
安全 Java 数据库连接
Java中的异常处理:从新手到专家
在Java编程的海洋里,异常处理是一块不可或缺的救生板。本文将带你领略异常处理的重要性,并深入探讨如何在Java中优雅地处理这些不期而遇的波涛。从基础的try-catch语句到高级的自定义异常和最佳实践,我们的目标是让每位读者都能在面对异常时游刃有余,确保代码的稳健与优雅。
39 2
|
3月前
|
Java 数据库连接 开发者
Java中的异常处理:从新手到专家
在Java编程的世界中,异常处理是每位开发者必须精通的技能。本文将引导您了解Java异常处理的基础知识,深入探讨高级技巧,并分享最佳实践,帮助您从初学者成长为熟练处理各种异常情况的专家。
|
5月前
|
Java 开发者
那些年,我们追过的 Java 封装:从新手到专家的必经之路
【6月更文挑战第16天】Java初学者到专家的旅程中,封装是关键一环。封装隐藏实现细节,提供简洁接口,保护数据并确保代码整洁、可维护。以`Person`类为例,私有变量与公共方法展示了封装原则,助力团队协作和问题解决,成为编程路上的宝贵经验。封装,从新手到高手的不解之缘,持续塑造更高效、可靠的软件。
39 6
|
5月前
|
安全 Java 程序员
💥JAVA世界里的“拆弹专家”:try-catch-finally如何拯救你的代码?
【6月更文挑战第18天】Java异常处理的关键是`try-catch-finally`,它确保程序在遇到错误时不崩溃。例如,在文件操作中,`try`块尝试读/写文件,`catch`捕获如FileNotFoundException或IOException,打印错误信息,而`finally`确保资源释放。通过这种方式,代码能优雅处理异常,增强健壮性。
39 0
下一篇
无影云桌面