java全套基础知识第一章

# 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课程学习什么)?

  1. Java编程语法(字符集、条件语句、循环语句等);
  2. Java编程语言面向对象的概念;
  3. 图形用户界面(GUI)编程;
  4. 多线程;
  5. 网络;
  6. 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这样的目录下面才能运行,目录结构要和包结构一样.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值