一、Java入门知识
(一)Java语言概述
- 1995年有SUN公司詹姆斯高斯林(James Gosling)等人正式发布第一个版本。
- Java语言平台版本
-
J2SE(Java 2 Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发
-
J2SE(Java 2 Platform Standard Edition)小型版
是为开发电子消费产品和嵌入式设备提供的解决方案。
是为开发企业环境下的应用程序提供的一套解决方案
-
J2SE(Java 2 Platform Standard Edition)企业版
该技术体系中包含的奇数如Servlet、Jsp等,主要针对于Wed应用程序开发
jdk1.5以后,我们将其更名为:JAVASE,JAAME,JAVAEE
- Java语言特点
- 简单性:Java剔除了C++的操作符过载、多继承特征、预处理程序和指针等
- 面向对象:在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。 数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的包装。类是按一定体系和层次安排的,是的子类可以从父类继承行为。
- 分布性:Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
- 编译和解释性:Java先编译程序生成字节码再在Java虚拟机中解释执行。
- 稳健性:Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java不支持指针,它消除重写存储和讹误数据的可能性。异常处理是Java中使得程序更稳健的另一个特征。
- 安全性
- 跨平台性:可移植性,一次编写,到处运行(不同操作系统)。
- 高性能
- 多线程
- 动态性
-
请解释Java语言的跨平台特性
Java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释称符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上运行。
JAVA语言是跨平台的,而JVM不是跨平台的。
(二)JDK/JRE/JVM的区别
- JDK(Java Development Kit)
- JDK是Java开发工具包,是Sun公司针对Java开发员的产品。
- JDK中包含JRE(所以安装了JDK,就不用再单独安装JRE了),在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是JVM,lib中则是JVM工作所需要的类库,而JVM+lib=JRE。
- JDK是整个JAVA的核心,包括了Java运行环境JRE、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)
- JRE(Java Runtime Environment)
- 是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
- 包括Java虚拟机(Java Runtime Environment)和Java程序所需的核心类库等,这些是运行Java程序的必要组件。
- 与大家熟知JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对与使用程序的用户。
- JVM(Java Virtual Machine)
- 就是我们常说的Java虚拟机,它是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
- 也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
- 只有JVM还不能完成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而JRE包含lib类库。
- JVM屏蔽了与具体操作系统平台相关的信息,是的Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
(三)JDK安装路径下的目录解释
- bin目录:该目录用于存放一些可执行程序。如javac.exe(java编译器)、java.exe(java运行工具),jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
- include目录:由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
- jre目录:“jre”是Java Runtime Environment的缩写,意为Java程序运行时环境。此目录是Java运行时环境的根目录,它包括Java虚拟机,运行时的类包,Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
- lib目录:lib时library的缩写,意为Java类库或库文件,时开发工具使用的归档包文件。
- src.zip文件:src.zip为src文件夹的压缩文件,src中放置的时JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
(四)第一个Java程序
-
准备工作
win7:打开我的电脑->查看->文件夹选项->查看->去掉“隐藏已知文件类型的扩展名”前的对勾。
win10:打开我的电脑->查看->把文件扩展名勾上
-
新建一个文本文档将后缀名改为.java 例如 Hello.java
-
编写Java代码
class Hello{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
- 在源文件路径打开命令行窗口,使用javac命令编译HelloWorld源文件,生成字节码文件(后缀名为.class)
格式: javac 文件名.java (注意:这里是带有后缀名的) - 使用java命令对class字节码文件进行解释运行
格式: java 字节码文件名 (注意:这里是没有后缀名的)
(五)注释概述
1.什么是注释
用于解释说明程序的文字。(注释斌并不会被执行,是给我们写代码的人看的,书写注释是一个非常好的习惯,平时写代码一定注意注意规范。)
2.注释的作用
通过注释提高Java源程序代码的可读性;使得Java程序条理清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。
3.注释的分类
- 单行注释 格式:
//这是单行注释
- 多行注释 格式:
/*
注释的文字
*/
- 文档注释 格式:
/**
*注释的文字
*注释的文字
*/
二、Java语言基础
(一)关键字
-
什么是关键字
就是被java语言赋予特殊含义的单词。 -
关键字的特点
组成关键字的字母都是小写 -
常见关键字
class,public,static,void …
-
关键字的注意事项
(1): goto和const是java语言的保留字
(2): 类似于editplus这样的高级文本编辑器对关键字都是有颜色变化的 -
关键字与保留字的区别
关键字, 一定是保留字。
保留字一般是等同于关键字的。
从字面含义上理解,保留字是语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。而关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。
(二)标识符
-
什么是标识符
就是给类,接口,方法,变量,常量等起名字时使用的字符序列 -
标识符的组成规则
(1): 英文的大小写字母
(2): 数字字符
(3): $和_ -
标识符注意事项
-
所有标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始**,**不能以数字开头
-
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字得任何字符组合
-
不能使用关键字作为变量名
-
标识符是大小写敏感的
String Man="hzm"; String man="hzm";
-
合法标识符举例:age、$salary、_value、__1_vale
-
非法标识符举例:123abc、-salary、#abc
-
-
标识符中常见的命名规范
(1)包(就是文件夹,它的存在是为了解决我们同一个目录下不能同时存在两个相同名称文件的问题。)
字母都是小写 。例如itcast
(2)类或者接口
一个单词: 首字母大写,其余字母小写。例如Student , Teacher , Spring , Struts , Hibernate
多个单词: 每一个单词的首字母都是大写,其余字母小写。例如StudentName , UserLoginController
(3)方法或者变量
一个单词: 字母全是小写。例如name , age
多个单词: 从第二个单词开始,首字母大写,其余字母小写。例如getName , getAge
(4)常量
一个单词: 字母全是大写。例如NAME , AGE
多个单词: 字母全是大写,每一个单词之间使用 _ 隔开。例如STUDENT_MAX_AGE
(三)常量
- 什么是常量
就是在程序的执行过程中其值不发生改变的量。所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序中运行过程中不允许被改变。 - Java中常量的分类
(1):字面值常量
(2):自定义常量 - 字面值常量的分类
(1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”
(2): 整数常量 所有整数 12,23
(3): 小数常量 所有小数 12.34,56.78
(4): 字符常量 用单引号括起来的内容 ‘a’,‘A’,‘0’ (注意事项:单引号中只能是单个字母,单个数字,单个符号)
(5): 布尔常量 较为特有,只有true和false
(6): 空常量 null - Java针对整数常量提供了4种表现形式
(1):二进制
(2):八进制
(3):十进制
(4):十六进制 - 常量名一般使用大写字符。
(四)变量
1.变量的概述和格式
-
什么是变量
在程序执行的过程中,在某个范围内其值可以发生改变的量
变量其实是内存中的一小块区域通俗来说就是可以变化的量!
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用 -
变量的定义格式
数据类型 变量名 = 变量值 ;
例如 int i=1; -
注意事项
每个变量都有类型,类型可以是基本类型,也可是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每个声明都必须以分号结束。
-
变量作用域
-
类型变量
-
实例变量
-
局部变量
-
-
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary,除了第一个单词以外,后面的单词首字母大写 lastname lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写字母和 驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
2.数据类型的概述和分类
1.为什么有数据类型
我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。
如果没有数据类型,那么我们需要开辟多大的内存空间合适呢?
为了解决这种问题,java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间。
2.Java中数据类型的分类
(1): 基本数据类型
(2): 引用数据类型: 数组 , 类 , 接口
3.基本数据类型的详细讲解
(1)数值型:
整数型 | 字节数 | 范围 |
---|---|---|
byte | 1(8bit) | -128~127 |
short | 2(16bit) | -215 ~ 215 - 1 |
int | 4(32bit) | -231 ~ 231 - 1 |
long | 8(64bit) | -263 ~ 263 - 1 |
浮点型 | 字节数 | 范围 |
---|---|---|
float | 4(32bit) | -3.403*1038 ~ 3.403*1038 |
double | 8(64bit) | -1.798*10308 ~ 1.798*10308 |
(2)字符型 |
字符型 | 字节数 | 范围 |
---|---|---|
char | 2(16bit) | 0 ~ 216 - 1 = 65535 |
(3)布尔型
布尔型 | 字节数 | 范围 |
---|---|---|
boolean | 1 |
4.整数默认是int类型的 , 浮点数默认是 double类型的
5.注意事项:
- 定义long类型的数据,值的后面需要加一个后缀L(大小写都可)
- 定义float类型的数据,值的后面必须要加一个后缀F(大小写都可)
- 变量在使用之前必须赋值
- 给变量赋值不能超过该数据类型的范围
- 相同的作用域内不能定义两个同名变量
3.数据类型转换
1. 自动类型提升
概念:byte short char任意一种类型在参与数学运算时(如加法运算),会自动提升为 int 类型,如果还有long float double类型参与运算则会相应地提升为long float double类型,布尔类型不参与数学运算,byte short char之间参与数学运算时不发生相互转换,而是转换成int再计算。
class A{
public