Java基础(一)

java中包含哪些东西
java = javaSE + javaEE + javaME

SDK : software development kit 软件开发包 函数库或者工具
JDK : java development kit 是面向开发人员的,java开发工具
jre : java runtime enviroment java运行环境,是面向应用程序使用者的

知识点速记:
JDK = jre + java提供小工具(kit)

java可以做什么

javaSE桌面应用:(逗你玩)
javaEE企业级网站项目(实战项目演示)
javaME手机应用

java的安装配置
1,java 的下载:SUN公司的java 已经被oracle公司收购。
: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Java SE Development Kit 8u172部分 勾选Accept License Agreement
然后选中所需要版本进行下载。
2,安装jdk ,然后安装jre
注意:安装目录不要有中文,不要有空格。
3,配置环境变量:
window :
1.1:新建JAVA_HOME = jdk安装目录
1.2:新建classpath:.
1.3:修改path : 在path的最前面添加java的工具路径,
%JAVA_HOME%/bin;

ubuntu : 在登陆用户的家目录下面:

配置环境变量(文件: .bashrc 这文件的最后一行开始配置)

export JAVA_HOME=/home/briup/jdk/jdk1.8.0_172
export CLASSPATH=.
export PATH=JAVA_HOME/bin:PATH

配置完了之后,需要让文件立刻生效: source .bashrc

mac : 请参考 https://www.cnblogs.com/dingzhijie/p/7016397.html

安装完成以后的java
bin : 存放可执行文件
javac : 编译.java文件 变成.class文件
cmd : javac Hello.java
java : 运行.class文件
cmd : java Hello

javadoc:生成java文档
javadoc HelloWorld.java
javadoc -d 目录 CommentTest.java
javadoc -encoding utf-8 -d mydoc CommentTest.java
javadoc -encoding utf-8 -d mydoc -author -version CommentTest.java
javadoc -encoding utf-8 -d mydoc -author -version *.java
jar : 把 .class 文件 变成jar包。
jar -cvf hello.jar HelloWorld.class

db : java提供的数据库
include : C语言的头文件内容
jre : java 的运行环境
lib : java 所用的基本jar包

知识点速记:
java 内部有些东西是用C实现的。

java的优点
1,简单性 : 面向对象变成,写代码变得非常简单。
2,跨平台 : 一次编译,到处运行。(jvm)
3,多线程 : 其他语言的多线程一般是系统级别的,java的多线程是语言级别的
线程 : 一个进程下 其他多个任务同时完成
进程 : 一个应用 运行 会在内存中开辟一块独立的内存空间
4,动态编译: 在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动
5,内存管理方案,gc:垃圾回收机制 : 指的是堆中的内存。
如果被引用数为0 就是 垃圾
java中有一个专门负责JVM中垃圾释放的线程。
垃圾的定义:在堆中的对象,没有任何引用指向这个对象,那么这个对象就是垃圾。
垃圾: 没有引用的内存节点

注意:垃圾回收有自己的算法,我们是不能控制垃圾回收机制的,虽然有和垃圾回收相关的方法:
java.lang.System.gc() java.lang.Runtime.gc(),但是还是无法控制垃圾回收机制

知识点速记:java 一次编译,到处运行

java的helloworld例子
编写java程序.HelloWorld.java

知识点速记:java代码必须写在方法中,方法必须写在类中,有主方法的类是可以运行的。

类{
方法{
int a = 10;
syso(a);
}
}

java代码的类加载机制
把Hello.class字节码文件中Hello类加载到内存的过程

java Hello就会触发java类加载

类加载:双亲委托机制

启动类加载 老子(孔子爹)
/jre/lib/rt.jar
扩展类加载 孔子
/jre/lib/ext/*.jar
本地类加载 孔融
classpath:.
什么时候触发类加载?
java Hello

为了避免类的重复加载
网络类加载
思考:为啥要存在这么多类加载?

双亲委托机制加载类的流程:
1,执行java HelloWord 命令时候开始类加载(得到加载类的指令)
2,本地类加载器接到加载HelloWorld类的指令,但是不做处理,反馈给上级 扩展类加载器
3,扩展类加载器得到加载HelloWorld类的指令,但是也不做处理,反馈给上级 启动类加载
4,启动类加载器得到加载HelloWorld类的指令,直接处理,进行类加载。加载rt.jar中的类,但是没有加载到HelloWorl的类,接着启动类加载器又把加载 HelloWorld类的指令 向下交给扩展类加载器进行完成
5,扩展类加载器 得到上级分配的任务:加载HelloWorld类,立刻加载jre/lib/ext/*.jar,但是也没有加载到HelloWorl的类,接着 扩展类加载器又把加载HelloWorld类的指令 向下交给本地类加载器进行完成。
6,本地类加载器 得到上级分配的任务:加载HelloWorld类,立刻执行加载ClassPath下的类,如果加载到了HelloWorld类 调用main方法执行,如果没有加载到HelloWorld类就报异常,ClassNotFindException 类找不到。

扩展:可以自己动手把一个class文件打成jar包,放到jre/lib/ext/下,然后运行jar包中的类,看是否可以运行成功。

简单了解java虚拟机
进行类加载,
字节码验证,
栈不能溢出,
方法的参数类型需要正确,
类型转换需要正确。
把字节码转换为机器码进行运行。

java中的顶级元素(顶级关键字)

package + import + class

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)

带包名的类编写,编译运行HelloPackage.java
不要出现中文: 可能会发生中文乱码问题。

不指定编码的编译 :javac -d bin src/HelloPackage.java
指定编码为utf-8 : 编译 : javac -encoding utf-8 -d bin src/HelloPackage.java
运行 : java -cp bin com.briup.ch01.HelloPackage

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值