开发者社区> 笑傲江湖lcx> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
复习java逻辑---实现猜数字游戏
package shopping; import java.util.*; public class SendGiftMenu { public static void main(String[] args){ Random rnd = new Random(); Scanner input = new Scanner(System.
935 0
java线程实现
线程的生命周期及五种基本状态关于Java线程的生命周期,请看下面这张图:新建状态(New):当线程对象创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()
2156 0
Spark之RDD的transformation&action(Java&Scala实现)
Spark之RDD的transformation&action(Java&Scala实现)
6298 0
Java使用agent实现main方法之前
创建Agent项目 PreMainExecutor 类,在main方法之前执行此方法 public class PreMainExecutor { public static ...
944 0
使用JNA实现Java对C的调用
### jna coding #### C ```c #include int add(int x, int y) { return x+y; } ``` #### Java ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; p
2915 0
java 实现 mysql 数据库导出与导入(适合linux和windows)
</pre>备份<p></p><p></p><pre name="code" class="html">import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.InputStream; import java.io
2374 0
Java实现读取文件夹下(包括子目录)所有文件的文件名
在编程的过程中,经常会用到对文件的读写操作等。比如,找出某一个文件夹下的所有文件名等。 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序。可以作为某一个模块,在需要的时候直接使用。 package src; import java.
874 0
Java mongoDB实现layIM版web即时通讯系统
webChat 基于websocket的即时通讯系统。 涉及技术:java、springMVC、mybatis、jquery、layim、mongoDB等等。 核心功能 参见layim演示 我这里实现了后端的全部功能。 包括我踩过的坑:1、java操作mongo 2、离线消息推送的线程同步异步问题等等。 websocket的代码实现 前端im.js 后端L
2421 0
java的nio之:java的nio的服务器实现模型
【nio服务端序列图】 一:nio服务器启动类 1 package com.yeepay.sxf.testnio; 2 /** 3 * nio创建的的timerServer服务器 4 * 5 * @author sxf 6 * 7 */ 8 p...
721 0
【框架】[Spring]纯Java方式实现AOP拦截-详解ThrowsAdvice异常通知
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 这篇博客讲了AOP代理-通知的3种方式: 1、MethodBeforeAdvice-前置通知 2、AfterReturningAdvice-正常返回后通知 3、MethodInterceptor-环绕通知 【框架】[Spring]纯Java的方式实现AOP切面(拦截)技术 现在本篇博客再详细讲解一下ThrowsAdvice-异常通知。
1110 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
云栖专家带你技术进阶之理解Java内存管理机制
立即下载
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧
立即下载
Java工程师成神之路
立即下载