Java基础
一、Java基本
1. Java基础概念和常识
java语言特点
- 简单易学
- 面向对象(封装,继承,多态)
- 平台无关性( Java 虚拟机实现平台无关性)
- 可靠性
- 安全性
- 支持多线程
- 支持网络编程
- 编译与解释并存
JVM JDK和JRE
(1)JVM
Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。
在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。
Java 程序从源代码到运行一般有下面 3 步:
.class->机器码: JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。
字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。
(2)JDK和JRE
JDK 是 Java Development Kit,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。
JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
Java和C++的区别
- 都是面向对象的语言,都支持封装、继承和多态
- Java 不提供指针来直接访问内存,程序内存更加安全
- Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
- Java 有自动内存管理机制,不需要程序员手动释放无用内存
- 在 C 语言中,字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束。但是,Java 语言中没有结束符这一概念。
什么是 Java 程序的主类 应用程序和小程序的主类有何不同?
小程序 | 应用程序 |
---|---|
主类是一个继承自系统类 JApplet 或 Applet 的子类 | 主类是指包含 main()方法的类 |
必须要求是public | 不一定要求是public |
没有 main() 方法,主要是嵌在浏览器页面上运行(调用init()或者run()来启动) | 从主线程启动(也就是 main() 方法) |
为什么说java语言的“编译与解释并存”?
高级编程语言按照程序执行方式分为:
编译型语言 | 解释型语言 |
---|---|
编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码 | 解释器对源程序逐行解释成特定平台的机器码并立即执行 |
java程序是先编译后解释的,先编译生成字节码文件(*.class文件),字节码文件必须由java解释器解释执行
2. Java语法
字符型常量和字符串常量
字符型常量 | 字符串常量 |
---|---|
形式上:单引号 | 形式上:双引号 |
含义上:整型值( ASCII 值) | 含义上:地址值(该字符串在内存中存放位置) |
内存大小上:2 个字节 | 内存大小上:若干个字节 |
泛型 类型擦除 通配符
-
泛型:
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。
-
类型擦除:
类型擦除通常指的是java的泛型,也被称为伪泛型,因为在java编译期间,所有泛型信息都会被擦除 -
通配符: T,E,K,V,?
? 表示不确定的 java 类型
T (type) 表示具体的一个java类型
K V (key value) 分别代表java键值中的Key Value
E (element) 代表Element
== 和equals的区别
== |
---|