java全套基础知识第一章

it2022-06-10  75

# java全套基础知识第一章 # 1.java平台版本 Java平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本 Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。 比如:数据库连接、接口定义、输入/输出、网络编程 Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。 比如:EJB、servlet、JSP、XML、事务控制 Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。 比如:呼机、智能卡、手机、PDA、机顶盒

2.软件开发中使用的开发工具 SDK: software development kit 软件开发包 函数库或者工具等 JDK java development kit 是面向开发人员的,java开发工具 JRE java runtime enviroment java运行环境,是面向应用程序使用者的 注意:JDK安装后一般都会包含JRE的 API application program interface 应用程序编程接口 别人开发好的供我们来使用(java)代码就称为API,API都会有一个API说明文档,让我们去查阅学习别人写好的代码如何来使用

3.Why(为什么要学习CoreJava)? CoreJava就是J2SE CoreJava是Java语言的基础,其它Java技术均是构建在Core Java基础之上。 4.What(CoreJava课程学习什么)?

Java编程语法(字符集、条件语句、循环语句等);Java编程语言面向对象的概念;图形用户界面(GUI)编程;多线程;网络;IO; … …

5.JDK主要包括内容 a. Java虚拟机:负责解析和执行Java程序。Java虚拟机可运行在各种平台上 b. JDK类库(API):  提供最基础的Java类及各种实用类。java.lang, java.io, java.util, javax.swing和java.sql包中的类都位于JDK类库中。 c. 开发工具: 这些开发工具都是可执行程序,主要包括: javac.exe 编译工具; javadoc.exe 生成JavaDoc文档的工具 jar.exe 打包工具 等。

6.JDK安装后的目录结构:

bin:java的相关命令 java javac jar javadoc

db:java提供的数据库

demo/sample:java代码的一些示例

include:C语言的头文件等内容

jre:java的运行环境

lib:java所用的基本的jar包

7.java的特点: 面向对象: 简单性:(相对应C和C++来讲)java不需要程序员操作内存 跨平台:一次编译,到处运行 (JVM) 多线程:其他语言的多线程一般是系统级别的,java的多线程是语言级别的 动态编译:(相对应C或者C++来说),在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动

8.垃圾回收机制(gc) java不需要程序员释放内存,就是因为java中有gc 为什么要垃圾回收? 垃圾:没有任何作用的/不再使用的内存空间 对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果对象永久占用内存,那么内存很快会消费光,导致后续对象无法创建或者出现内存不足的错误。 因此必须采取一定措施及时回收那些无用对象的内存,这样保证内存可以被重复利用。

C++等程序由程序员显示进行内存释放,这样有可能: 1) 忘记内存释放,导致没有意义的内存占用; 2) 释放核心类库占用内存,倒致系统崩溃;

Java中垃圾回收处理特点: 1) 由虚拟机通过垃圾回收器线程自动完成; 2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需要额外的内存,即便对象不再使用,内存也不会回收; 3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过java.lang.System.gc()/java.lang.Runtime.gc()建议虚拟机回收对象 4) 垃圾回收器线程在释放无用对象占用内存之前会先行调用该对象的finalize()方法

9.JVM(前期理解) Jvm是什么?简称java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。

编写.java文件—>编译为.class文件—>类加载–>字节码验证–>JIT运行

字节码验证的内容: 代码要符合JVM的规范 代码破坏计算机的系统或者硬件 栈不能溢出 方法的参数类型要正确 类型转换要正确

类加载: 双亲委托机制 把我们写好并编译成的.class字节码文件从硬盘中加载到内存

JVM使用类加载器来完成类加载的过程

类加载器有: 类装载器:(分为4步)1》2》3》4 1、启动类装载器:bootstrap class loader 从jdk的安装目录下 jdk/jre/lib/rt.jar rt.jar 是个包,放的是Java作为开发环境的所有的库 2、扩展类装载器:extensible class loader 从jdk的安装目录下 jdk/jre/lib/ext/*.jar jdk下的所有的.jar 文件 3、系统类装载器:system class loader $CLASSPATH 你所配置的classpath 4、网络类装载器:network class loader

类加载器:从一个指定路径下面去加载代码运行时需要用到的java类

10.java环境变量的设置 JAVA_HOME CLASSPATH PATH

windows: JAVA_HOME:JDK安装的目录路径 C:\Program Files\Java\jdk1.6.0

CLASSPATH:类加载时候查找的字节码路径 .

PATH:JDK安装目录里面的命令目录 …;%JAVA_HOME%\bin

unix:

vi ~/.bashrc

在文件中的最后一行下面配置: export JAVA_HOME=…/jdk1.6.0_32 export CLASSPATH=. export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

保存退出后 source .bashrc 让文件生效

变量设置成功后,在新打开的命令窗口中输入命令:java或者javac 后看到相应的信息提示即可. java -version

11.Java的程序结构:

a. 源文件: 包含Java代码(按java语法规则编写的内容)的文件; 特征: i. 以java作为后缀; ii. 可以包含多个类/接口; iii.名称与类名(只包含一个类/接口)或public修饰的类/接口(包含多个类/接口)同名; 结构: i. 包的声明语句(可有可无,如有只能有一行,且位于最前面); ii. import语句(可有可无, 可有多行,紧跟着包的声明语句); iii.类的声明语句(); b. 类: Java代码组织的单位, Java代码都是以一个个类形式组织的。用Java语言编写程序其实就是编写一个个类; 一个类里的语句内容用大括号括起来,一个类里带有零至多个方法。 结构: i. 类的声明语句,例: public class HelloWorld ii. 类的内容语句,用大括号括起来: 类中包括: (1) 属性 (2) 方法 c. 方法: 类似于其它语言里的函数或过程。方法里带有零至多行语句。 结构: i. 方法的声明语句,例: public static void main(String[] args) ii. 方法体,用大括号括起来: d. Main方法: Java虚拟机执行Java程序时,首先执行调用的方法。main方法又叫程序的入口方法或起点方法。不管你的程序有多大, 不管你的程序有多少个类,一定都会有一个main()方法来作为程序的起点。 例如: FirstJavaProgram.java文件中: public class FirstJavaProgram{ public static void main(String[] args) { System.out.println("Hello Java, I am your fans!"); } } public: 公开给其它类存取; class: 类声明的关键字; FirstJavaProgram: 类的名称; void: 方法的返回值; main: 方法的名称; String[]: 数组类型; args: 参数名称; System.out.println: 打印到标准输出上(默认为命令行) "Hello Java, I am your fans!": 要输出的字符串内容; ; 每一行语句必须用分号结尾;

12.java类名和文件名的关系:

一个java源文件(.java)中,可以有好多个类(class),但是,最多只能有一个类(class)被public修饰

如果有一个类被public修饰,那么这个源文件(.java)的名字就必须和这个被public修饰的类的名字一致(必须),而且还要首字母大写(首字母大写是命名规范,其实小写也可以的)

13.java文件中的三个顶级元素:

package 1.最终会是以文件夹的形式体现出来(有什么包,就必须有什么文件夹,运行的时候.class文件必须在这个文件夹下面) 2. .java文件中有多个package的时候,用.分割并且结尾用;号结束 例如:(com.briup.test;) 3.包也是java中类的标识的一部分,确定某一个类是通过包名加类名来唯一确定的 比较运行java类的时候: java package.类名 (java com.briup.test.HelloPackage)

import 1.导包用的关键字 2.如果你想在当前这个类使用其他的类,那么就必须通过这个关键字,把那个类导入进来 3. java.lang包下面的类可以直接使用,不用导入. 4. 和当前这个类位于同一个包下面的类,也不需要导入,可以直接使用

class java中标识一个类的关键字 (java类中可以没有package,也可以没有import,但是一定会class)

注意:一般情况下 src 目录下放java程序的源代码(.java)

bin 目录放.java文件编译后的.class(字节码文件)

14.HelloWorld.java文件中写一个带到package(包名)的类HelloWorld并编译运行 创建并打开一个java文件: vi src/HelloWorld.java 编译这个java源文件 javac -d bin src/HelloWorld.java 运行这个java类 java -cp bin HelloWorld

注意:-d表示编译的时候生成和类中的package相对于的目录结构,然后把编译完成的.class文件放到这个目录中.如果这个类中没有类名,那么就不生成这个包目录了。 -cp表示在运行这个java类的时候去bin目录下找这个java类所在的.class文件进行类加载 cp就是classpath的意思

我们运行的时候是运行的java类,这个java类在相应的.class文件中,例如这个例子中,我们运行的是HelloWorld这个java类,这个java类是在HelloWorld.class文件中的,所以我们运行的时候HelloWorld.class文件中的HelloWorld这个java类:java -cp bin HelloWorld

15.HelloPackage.java文件中写带到package(包名)的类HelloPackage并编译运行,包名为:com.briup.chap01 vi src/HelloPackage.java

javac -d bin src/HelloPackage.java java -cp bin com.brup.chap01.HelloPackage

注意:一个类的package是类的名字的一部分,完整的类名是 包名.类名

例如:一个类MyTest的package为com.briup.test,那么将来这个这个类将来编译成为的MyTest.class文件一定要放在com/briup/test这样的目录下面才能运行,目录结构要和包结构一样.


最新回复(0)