目录
Java基础
- Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的一门高级程序设计语言。2009年被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。
- Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
移动操作系统 Android 大部分的代码采用 Java 编程语言编程。
Java核心概念
- JDK(Java Development Kit):Java开发工具包,包括JRE,是开发Java人员必备的开发运行Java程序的工具
- JRE(Java Running Environment):是指Java的运行环境,运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库
- JVM (Java Virtual Machine):Java虚拟机,我们在进行java开发的时候,首先需要编写java源 文件,经过编译器进行编译,编译成二进制文件(字节码文件.class文件),在经过解释器对字节码文件进行 解释翻译,才能够去执行。而JVM中包含了解释器(不同操作系统解释器不一样),所以java跨平台就是 通过JVM来实现的。(确切的来说,java跨平台是因为JVM中的解释器跨平台) 例如: 源文件(市场中买回来的鱼)–编译器(处理鱼所用的菜刀)–字节码文件(经过处理的鱼) --解释器(烹饪鱼用到的灶具)(Java虚拟机)是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
三者之间联系:
JDK包含了JRE,JRE包含了JVM.
** 利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。**
Java分类
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
- JavaEE (J2EE) (Java 2 Platform,Enterprise Edition,java平台企业版)
- JavaME (J2ME) (Java 2 Platform Micro Edition,java平台微型版)。
2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 “2”:J2EE 更名为 Java EE,J2SE 更名为Java SE,J2ME 更名为 Java ME。
Java版本
sun jdk1.6
oracle(jdk1/7-jdk1.8)java6 java7 java8…java17
*目前的每六个月迭代一个大的版本 ,发布时间为每年的3月和9月,其中只有lts为长期服务支持版,最后一个企业稳定版本为java8,目前lts版为java11和java17,但是从2019年9月之后的jdk使用Oracle的jdk应用商业购买授权 * (一般版本使用1.8.20)
openjdk:
openjdk是java7的先行版本
java7之后的openjdk 为开源版本
国内jdk
- 腾讯jdk (针对人工智能、算法)
- JBOSSjdk
Java优势
jvm使得 java 更容易更安全 实现跨平台
- 平台无关性:能运行于不同的平台上
- 安全性:去掉了指针操作,内存由操作系统分配
- 面向对象:利用类使程序更加利于维护
- 分布式:可以使用网络文件和本机文件一样容易
- 健壮性:检查程序编译和运行错误
- 虚拟机机制:利用虚拟机解释字节码执行Java程序实现跨平台
- 垃圾回收机制:自动内存回收
- 代码安全性机制:加载代码后效验代码后再执行代码
字符编码集
ASCII
计算机只识别二进制对于字符的识别是较繁的为了提升计算机识别字符的速度降级计算机运算执行内存设计了ASClI码表
由于计算机最早是国外开始应用的,当时的打字机使用的是英文,英文只有26个字母,大小写字母+数字+特殊符身不超过128个,
由于十进制与二级制转换相当简单且十进制在存储过程中相比于字符更节省空间,我们将数字与字符建立映封关系使用一个数字来代表一个字符,
这种映封关系制作的一个表格这个表格我们称之为ASCII码表
字符编码集:
ASCII
Unicode
ASCII码表轻松的解决了字符编码的问题,但是随着计算机技术的广泛应用,被世界各国使用,而各国家的母语并非英语造成了ASCIl码表无法表示世界各国语言,于是我们将使用一个字节存储的ASCIl码表升级为两个字节表示的Unicode字符集。
UTF-8
Unicode字的集定类解决了各国字符编码的问题,但是有两个缺点:
1.世界上自然语种太过于丰富,人们需要为每一种自然语言请一套Unicode编码集,工作最大,多语种的运行环境开发维护难度大。
2.哪怕是一个简单的十进制数字也需要使用两个字节存储,造成计算机资源的浪费。难通就没有更好的解决方案了吗?那毛主席教育我们说:人定着天!
世界上所有的自然语种统一使用一个编码集这样就解决了多语种环境开发和运行的问题,这个统一的编码集就是UTF.
UTF编码集有多个执行标准,其中应用最广泛的版本是UTF-8.
UIF-8不但统一个编码集而且在使用过程中如果遇到的字符在ASCII中存在则使用一个字节存储,更节省计算机资源,
Java命名规则
标识符命名规则:
由数字、字母、下划线、$组成。不能以数字为开头,不能是关键字,java对字母大小写敏感。
标识符命名规范:
-
类名:用名词,首字母大写
-
变量名:首字母小写,驼峰式命名规则
-
常量名:全部大写,下划线
-
方法名:动词,首字母小写,驼峰式命名规则
public修饰的类名与源文件名字关系
- 使用public修饰的类,该类的名字必须与该类所在的源文件同名
- Java编译后生成的class文件名与源代码中类的名字相同与源代码文件名无关
- 同一个源代码中编写多个类
- 在同一个源代码文件中可以编写多个类
- 在同一个源代码文件中多个类编译后生成各自与该源代码中与各个同名的class文件
- 在同一个源代码文件中多个类public只能修饰与源文件同名的那个类
- 在同一个源代码文件中不能出现同名的类
- 但是在内部类中可以出现多个public
package作用及命名规范
package作用
-
按照不同的功能把代码放到不同的包里
-
规划电脑的文件夹或者是目录
-
也是可以规避同名文件的方法
package命名规范
-
由数字、字母、下划线、$组成。不能以数字为开头,不能是关键字
-
package名不允许出现大写字母
-
公司域名倒写+项目名+模块名
-
com.xxx(域名).xxx(项目).xxx(模块)
Java 修饰符
Java语言提供了很多修饰符,主要分为以下两类:
访问修饰符
java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
-
public公有访问修饰符 : 对所有类可见。使用对象:类、接口、变量、方法
-
protected受保护的访问修饰符 : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private私有访问修饰符 : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
非访问修饰符
-
static 修饰符,用来修饰类方法和类变量。
-
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
-
abstract 修饰符,用来创建抽象类和抽象方法。
-
synchronized 和 volatile 修饰符,主要用于线程的编程。