Java学习
.sh脚本文件编程步骤
- 写脚本文件行首#!/bin/bush/
- 输入你想批量执行的命令
- 修改文件u的权限,变成科执行文件
- 执行 ./xx.sh
查看进程和杀死进程:
ps : 查看进程
kill -9 PID :杀死进程
Java学习笔记
Java:面向对象
C:面向过程
是什么:
一种编程语言:语法规则,词法规则,句法规则,高级应用
部署环境,开发环境,运行环境
为什么:
- 简单易学–>面向对象思想
- 一次编译,多端运行(可移植性)
Java源码:Xxx.java
通过javac命令,能够把源码变成字节码文件 Xxx.class
通过Java命令,来运行.class文件
我在windows上编译好的,.class文件放在Linux上依旧可以执行- 多线程–>语言层面的多线程
- 动态更新–>程序A 调用了 程序B,程序B的源代码发生了改变,程序B需要重新编译的
JVM提供的特性:
垃圾回收机制(CG):
- 可以让我们免于内存管理的麻烦
- 不需要手动去释放内存,解放了程序员的时间和精力
- GC是优先级较低的后台线程
- 字节码校验功能
什么时候会运行呢?
- 内存不足的时候
- 程序空闲的时候
垃圾回收的方法?
- java.lang.System.gc()
- java.lang.Runtime.gc()
这两个方法只提供建议功能
垃圾回收的算法?
- 标记法: 压缩标记的过程,其实就是判断对象是否可达的过程。当所有的根都检查完毕后,堆中将包含可达(已标记)与不可达(未标记)对象。标记完成后,进入压缩阶段。在这个阶段中,垃圾回收器线性的遍历堆,以寻找不可达对象的连续内存块。并把可达对象移动到这里以节约内存空间。
- 迁移法:与标记清理算法过程一样,只是不直接清理可回收对象,而是将所有存活对象移动到一端,之后清理边界之外的对象内存
开辟内存空间是如何做到的?
- 没有对象需要 new
- 还承担了开辟内存空间的作用
怎么办
Java使用前的准备:
-
获得JDK,用1.8 ,Oracle官网下载
-
安装JDK
Linux:解压压缩包
Windows:像安装软件一样,下一步 -
配置环境变量:
-
Linux:
- 配置文件
- 系统配置文件/etc/profile
- 用户配置文件~/.bashrc
- 添加环境变量:
JAVA_HOME:指代jdk安装路径
CLASSPATH:Java执行环境,找到所要执行的Java程序所需要的类或者包。
PATH:可执行文件的搜索路径- 配置完成后:
记得: source 配置文件
- 配置文件
- Windows:
右击我的电脑—>左侧有一个高级系统设置
–>环境变量
–>上层用户变量,下层时系统变量
–>需要手动添加JAVA_HOME[和CLAAPATH]
–>再Path中添加%JAVA_HOME%/bin
–>三个确定全部点完
–>重启cmd进行验证
-
-
如何验证?
- java -version
- java
- javac
三个命令不报错即可
Java的一些版本
JDK:Java Development Kit
包含的内容:
- JVM:Java虚拟机
- JRE:java Runtime Environment
java 运行命令:
java:执行Java类
javac:编一Java文件
javadoc:‘生成Java的api
jar…:打包…
在vi中创建第一个Java程序
-
需要手动编写的只有.java文件
-
需要创建一个文件,名字叫做Hello.java. —touch Hello.java
-
使用vi打开Hello.java开始编写 — vi Hello.java
-
Java首行有三部分内容:
package(可选):定义包名
java.lang.Date
javax.Swing.JButton
包名有什么用?- 给.java文件和.class文件进行文件夹分层,让代码保存的位置有一个良好的树形结构
- 可以区分同名的文件
java.util.Date
java.sql.Date - 包名+类名的这种写法:全限类名
- 包名有自己的取名的规则
一般是组织或者域名的反写
www.baidu.com —>com.baidu.util 包名
import(可选):
导包
Java中默认导入java.lang
如果需要使用lang包之外的需要导入
import可以导入哪些包?
1.jdk提供的类库
2.自己写的Java代码所在的包
3.借用导入的第三方jar包public class(必须要有的):
每个Java文件有且只有一个,且后哦面跟的单词必须和文件名字保持一直,区分大小写
main 方法:
Java程序的入口方法,如果你的Java程序想要运行,必须要有主方法
main方法有自己的写法规则,必须是固定格式,一般不修改
-
public:定义的是方法的权限 公共的
-
static:定义的是静态方法
-
void:方法的返回值类型,无返回值用void
-
main:方法名称
-
():要放参数的列表,参数列表的形式;数据类型 形式参数多个之间用英文逗号隔开
-
String[] args:main方法的参数是一个字符串类型的数组,形式参数的名字叫做args
-
{}:代码块,代表实际执行的部分。也叫做方法体,里面的代码从头到尾执行完毕,程序运行结束分析一下输出语句:
-
System --> 类
-
.out --> 内部类
-
.println --> 静态方法
-
(“Hello ,World”); --> 小括号内是参数字符串类型的参数,引号里的内容会被打印到终端上
package com.briup.day01;
public class Hello{
public static void main(String [] args){
System.out.println("Hello ,World!");
}
}
- 【当前路径下】有写好的源文件,Hello.java
- 编译
javac -d Hello.java - 如果有package产生了
com/briup/day01/Hello.class - 运行
java com.briup.day01.Hello
- 编译