V尼熊的java之旅——java基础篇
来源:互联网 发布:工业大数据案例 编辑:程序博客网 时间:2024/06/05 13:32
JDK 和 JRE 的区别:
Java 运行时环境( JRE )是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 Applet 需要的浏览器插件。Java 开发工具包( JDK )是完整的 Java 软件开发包,包含了 JRE ,编译器和其他的工具(比如: JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
Java 开发工具包 (JDK)
Java 开发工具包是 Java 环境的核心组件,并提供编译、调试和运行一个 Java 程序所需的所有工具,可执行文件和二进制文件。JDK 是一个平台特定的软件,有针对 Windows,Mac 和 Unix 系统的不同的安装包。可以说JDK 是 JRE 的超集,它包含了 JRE 的 Java 编译器,调试器和核心类。目前 JDK 的版本号是 1.7,也被称为Java7。
Java 虚拟机(JVM)
JVM 是 Java 编程语言的核心。当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码。JVM 也是平台特定的,并提供核心的 Java 方法,例如内存管理、垃圾回收和安全机制等。JVM 是可定制化的,我们可以通过 Java 选项(java options)定制它,比如配置 JVM 内存的上下界。JVM 之所以被称为虚拟的是因为它提供了
一个不依赖于底层操作系统和机器硬件的接口。这种独立于硬件和操作系统的特性正是 Java 程序可以一次编写多处执行的原因。
Java 运行时环境(JRE)
JRE 是 JVM 的实施实现,它提供了运行 Java 程序的平台。JRE 包含了 JVM、Java 二进制文件和其它成功执行程序的类文件。JRE 不包含任何像 Java 编译器、调试器之类的开发工具。如果你只是想要执行 Java 程序,你只需安装 JRE 即可,没有安装 JDK 的必要。
JDK, JRE 和 JVM 的区别
JDK 是用于开发的而 JRE 是用于运行 Java 程序的。
JDK 和 JRE 都包含了 JVM,从而使得我们可以运行 Java 程序。
JVM 是 Java 编程语言的核心并且具有平台独立性。
即时编译器(JIT)
有时我们会听到 JIT 这个概念,并说它是 JVM 的一部分,这让我们很困惑。JIT 是 JVM 的一部分,它可以在同一时间编译类似的字节码来优化将字节码转换为机器特定语言的过程相似的字节码,从而将优化字节码转换为机器特定语言的过程,这样减少转换过程所需要花费的时间。
java的8种基本数据类型:
- byte
- short
- int
- long
- float
- double
- boolean
- char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装 类型之间做的一个转化。比如:把 int 转化成 Integer
,double 转化成 Double,等等。反之就是自动拆箱。
一个 ".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
静态变量和实例变量的区别:
在语法定义上的区别:静态变量前要加 static 关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
Java 创建对象的几种方式(重要):
(1) 用 new 语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用 java.lang.Class 或者 java.lang.reflect.Constructor 类的 newInstance() 实例方法。
(3) 调用对象的 clone() 方法。
(4) 运用反序列化手段,调用 java.io.ObjectInputStream 对象的 readObject() 方法。
(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。
静态变量和实例变量的区别
静态变量是被 static 修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。
实现对象克隆
1.实现 Cloneable 接口并重写 Object 类中的 clone() 方法;
2.实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆
JDK 常用的 package
java.lang:这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util: 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
- V尼熊的java之旅——java基础篇
- V尼熊的java之旅——面向对象篇
- V尼熊的java之旅——关键字篇
- V尼熊的java之旅——基本类型与运算篇
- Java基础——Java重点基础之反射
- Java基础—java基础语法之数组
- 黑马程序员——java入门之java与基础的基础
- 我的java之旅--一些基础
- Java的集合之基础篇
- Java的多线程之基础篇
- Java基础学习之——类的继承extends
- Java ——基础之继承与接口的区别
- JAVA基础之——注解的生命周期
- Java基础之——线程通信的理解
- java基础之——奇怪的数值
- Java从入门到精通——基础篇之Java基础概念
- 黑马程序员---Java基础篇之Java语言的概述
- java基础之java的基本了解
- POJ 1006 中国剩余定理
- stat函数的应用案例
- libsvm用法详解
- 值得推荐的C/C++框架和库
- swift3.0 String篇 -- 警:个人理解
- V尼熊的java之旅——java基础篇
- dedecms5.7发布文章提示“标题不能为空”的解决方法
- 大话数据库: 第五章 操作表中的数据
- CSS-3D按钮学习知识点(一)
- 在pycharm中导入mysql-python时包没有
- unity3d 调用函数与协程的区别和适用范围
- maven常见错误
- java 创建一个Class的对象来获取泛型的class
- 关于linux上的mysql异常:Starting MySQL. ERROR! The server quit without updating PID file ……