java开发语言
语言:os+数据结构+算法+思想
os:操作系统
int a>0,b>0,只写一句,能得到最大值
(|a+b|+|a-b|)/2
思想是语言的灵魂
java是面向对象编程语言
c是面向过程编程语言
c++半面向对象半面向过程编程语言
21-8-2
JAVA_HOME =java jdk 路径
CLASSPATH=class装载路径
PATH=可执行文件的搜索路径
jdk包含
1.java虚拟机JVM
解释执行java文件
2.java的类库
java.io.;
java.net.
…
3.java的可执行工具
javac ,java…
java 特点
1.提供一个解释性环境
加速开发
一次编译多次运行
多线程
支持动态更新
2.提供 比较简单的语言
1.取消指针,程序级别取消,底层存在,但是程序员不关心
2.没有内存管理
程序员创建对象手动开辟内存new
*不需要关心内存的回收
gc:垃圾回收器
C: malloc();开辟空间 ,free 释放空间
C++:new 开辟空间 ,delete()释放空间
java:new开辟空间,GC释放空间
垃圾:无用的对象内存,没有任何指向的内存
gc:什么时候回收
1.内存不够用
2.系统闲置的时候
垃圾回收方法(用引用计数法和可达分析法来分析)
1.标记清扫法
不会整理内存,会产生碎片
效率高,节约时间
2.复制算法
会整理内存,不会产生碎片
效率相对低,浪费时间
3.标记整理法
标记无用对象,将存活的对象压缩至内存一端,再将已经使用的内存空间一次性清理掉。
4.分代算法
新生代采用复制算法,老生代采用标记整理法
5.调用java-SE_API,通知垃圾回收器回收(只是提升回收概率,并不一定执行回收)
java.lang.System.gc();
java.lang.Runtime.gc();
8字节码验证
java—编译(jvm).class文件–发送其他地方(平台)–类加载器(查找并加载类的二进制文件.class,将其置于内存中)–字节码验证(确保被加载类的完整性(语法结构是否正确,并且和其他类的协调是否一致,数据来源,去向等检验)),提高类的程序健壮性,确保程序正常执行。----{ *1.即时编译器,执行类并发送给处理器指令执行程序(验证通过)*2.解释器,将有问题的重新解释运行(没有通过验证)|两者都最终达到运行结果(并不能保证结果一定正确)}验证内容:1.代码和jvm定义的规范是否一致,语法和版本的兼容性2.不能破坏系统的完整性3.没有堆栈的上溢和下溢4.参数类型是否正确5.类型转换是否正确java语法
1.编译成class文件
javac -d . hello.java
-d可以指定class存放的路径
. 为当前目录
2.运行java
java com.briup.day01.hello
package :定义包名
1.使用层级样式管理类class,最终以目录形式展示2.避免命名冲突3.改变类的名字 包名+类名 权限类名4.包名的命名规则 公司域名的倒写.功能 公司域名倒写.组名.功能21-8-32.import 引入其他包的内容Date日期类,由java的java.util包提供的对应是权限类名java.lang包的内容不需要import导入3.public class 公有类名,必须和文件名保持一致class定义类public修饰符 公共的公有的一个java文件中可以有多个类但公有类只能有一个
方法
public static void main(String[] args){
}
main是程序主入口,不可更改
定义方法的结构 修饰符 返回值类型 方法名)(参数列表){ //方法体,业务功能}public static public 公有的static 静态的不使用static修饰的就是非静态方法void 没有返回值有返回值需要结合return关键字return后面跟上返回的数据静态方法可以直接被静态方法调用,不能直接调用非静态方法间接调用 :new 对象调用 new Hello().eat(); //eat为非静态///
package com.briup.day01;
import java.util.Date;
public class hello{
public static void main(String[] args){
System.out.println(new Date());
display();
new hello().eat();
}
public static void display(){
System.out.println("haha");
}
public void eat(){
System.out.println("eat");
}
}
///
System.out.println(object类型(是java中的一个超类,子类都可继承));
javac -d . hello.java
-d可以指定class存放的路径. 为当前目录javac -d bin hello.javaSystem.out.println();多个点连用要知道每一个点后面被调用的内容是由点前面所对应的返回对象调用
A.eat().getAge();
public Student eat(){
return stu;
}
stu.getAge();
如果不在当前目录下,运行前临时指定
java -cp bin com.briup.day01.hello-cp 表示临时指定classpath一次自己写的类jar命令打包javadoc -author -version -d doc *.java