摘要:对象的自动清除对象回收是由垃圾回收线程负责方法可以要求系统进行垃圾回收,仅仅是建议系统没有析构方法,但的有类似方法系统在回收时会自动调用对象的方法子类的方法可以在里面释放系统资源,一般来说,子类的方法中应该调用父类的方法。
对象的自动清除
对象回收是由垃圾回收线程负责
System.gc()方法可以要求系统进行垃圾回收,仅仅是建议系统
java没有“析构方法”,但Object的finalize()有类似方法
系统在回收时会自动调用对象的finalize()方法
protected void finalize() throws Throwable{}
子类的finalize方法可以在里面释放系统资源,一般来说,子类的finalize方法中应该调用父类的finalize方法。
内部类与匿名类 内部类定义在一个类的内部
使用分为内部使用和外部使用
内部类总可以直接访问外部类的字段及放啊
内部类总访问外部类的字段可以用“外部类名.this.字段”的方式
用static修饰内部类,表明该内部类实际是一种外部类
因为它与外部类的实例无关
有人认为static的类是嵌套类,不是内部类
匿名类它没有类名,在定义类的同时就生成该对象的一个实例,不取名字,直接用父类或接口的名字
一次性使用的类
例子:
new Handler(){ ... }局部类
同局部变量一样,方法中的内部类
不能用public,private,protected,static修饰
但可以被final,abstract修饰
可以访问器外部类的成员
不能够访问该方法的局部变量,除非是final局部变量。
Lambda表达式
基本写法
(参数) -> 结果
例子:
(String s) -> s.lenth(); x -> x*x; () -> {System.out.println("aaa")}
大体上相当于其它语言的”匿名函数”或”函数指针”
在java中它实际上是“匿名类的一个实例”
装箱 基本类型的包装类它将基本类型包装成Object
integer i = new Integer(10);
Integer i=10;
实际为:Integer i=Integer.valueOf(10);
int a=i;
实际为:a=i.intValue();
可以在enum定义体中,添加字段,方法,构造方法
又称为注记,标记,标记,注释
是在各种语法要素上加上附加信息,以供编译器或其他程序使用
常用注解:
@Override 表示覆盖父类的方法
@Deprecated 表示过时的方法
@SuppressWarnings 标识让编译器不产生警告
引用实质就是指针
但是它是受控的,安全的
比如:
会检查空指引
没有指针运算
不能访问没有引用到的内存
自动回收垃圾
(1) 指针 》引用类型,引用本身就相当于指针,可以用来修改对象的属性,调用对象的方法
(2)指针运算 》数组
(3)函数指针 》接口,lambda表达式
(4)指向结点的指针 》对象的引用
(5)使用JNI
java Native interface
它允许java代码和其他语言写的代码进行交互
基本类型的相等 基本类型:数值类型:转换后比较
浮点数,最好不直接用==
Double.NAN==Double.NAN结果为false
boolean型无法与int比较
注 valueOf() -128到127会有缓存,超过的话就没有缓存了
枚举类型内部进行了唯一实例化,可以直接判断
引用对象“==”是直接看两个引用是否一样
如果要判断内容是否一样,则要重写equals方法
如果重写equals方法,则最好重写hashCode方法,因为一般以内容的hashCode作为唯一性标志
[图片上传失败...(image-845e09-1522336106762)]
String对象的特殊性判断对象,一定不要用==,要用equals
但是字符串变量及字符串常量会进行内部化,相同的字符串常量是==的
异常异常又称为例外,差错
对应着java运行错误处理机制
基本写法:
try{ 语句组 }catch(Exception ex){ 异常处理语句组; }java中处理异常
抛出异常
运行时系统在调用栈中查找:从生成异常的方法开始进行回溯,直到找到
捕获异常的代码
异常的分类
Throwable
Error:JVM错误
Exception
多异常的处理子类异常要排在父类异常的前面
finally语句
无论有无异常,都会执行处理语句
受检的异常Exception分两种
RuntimeException及其子类,可以不明确处理
否则,称为受检的异常,受检的异常,要求明确进行语法处理,要么捕获,要么抛出异常
自定义异常创建用户自定义异常类
继承自Exception类或某个子Exception类
定义属性和方法,或重载父类的方法
对于异常,不仅要进行捕获处理,有时候还需要将异常进一步传给调用者,一变让调用者也能感受到这种异常,这是可以在catch语句块或finally
语句块中采取以下三种方式:
将当前捕获的异常再次抛出
重新生成一个异常,并抛出
重新生成一个新异常,该异常中包含了当前异常的信息,如throw new Exception (“some message “,e)
断言及程序的调试断言
assert 表达式
assert 表达式,信息
在调试程序时,如果表达式不为true,则程序会产生异常,并输出相关的错误信息
例
assert hypotenuse(3,4)==5:”算法不正确”;
它起到对程序的检测作用
编译及运行只有在JDK1.4及以上的版本才可以使用断言
在运行时,要使assert起作用,则在运行时,使用选项(-ea ,即-enableassetions)
如 java -ea - classpath.Assertion
程序的测试及Junit在编写程序代码的同时,还编写测试代码来判断这些程序是否正确,这个过程称为“测试驱动”的开发过程
在java的测试过程,经常使用Junit框架
测试函数@Test来标注测试函数
fail(info) :表示信息出错
assertEqauls(arg1,arg2):表示程序要保证两个参数相等
assertNull(arg):表示参数要为null
语法错误(Syntax error):编辑,编译器发现
运行错误(Runtime error):异常处理机制
逻辑错误(Logic error):调式(debug),单元测试(unit test)
程序的调试在IDE中,项目中点右键,debug as
进入到调试视图(debug perspective)
调试的手段断点(breakpoint)
跟踪(trace)
监视(watch)
在很有可能有错误的地方设置断点,然后跟踪java基础类库
java.lang core
java.util
java.io
java.awt
java.net
java.sql
Object类Object类是所有类的直接或间接父类
让所有的类有了一致性
equals()
==是引用相等,equals是内容相等
如果覆盖equals方法,一般也要覆盖hashcode方法
getClass()方法是final方法,它返回一个对象在运行时所对应的标识
toString返回对象的字符串表示
finalize用于在垃圾收集前清除对象
notify(),notifyAll(),wait()线程相关
System类System.getProperty(String name)获取特定的系统属性值
线程进程:一个程序的运行
线程:程序中单个顺序的流控制称为线程
一个进程中可以含有多个线程
一个进程中的多个线程
分享CPU(并发的或以时间片的方式)
共享内存
线程体 — run()方法来实现的
线程启动后,系统就自动调用run()方法
使用通过继承Thread类
通过向Thread()构造方法传递Runnable对象
可用匿名类实现Runnable或用lambda表达式
线程池封装
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68931.html
摘要:只因技术种类繁杂众多层出不穷,程序员只有靠不断的学习才能不落后于技术,被工作淘汰。特此推荐给大家。 99%的程序员每天都是先学习,后工作,不然完成不了工作。只因技术种类繁杂众多、层出不穷,程序员只有靠不断的学习才能不落后于技术,被工作淘汰。我就是这其中一员,深得体会其中的「疼并快乐」,在...
摘要:小结程序计数器和虚拟机栈是线程私有的,而堆和方法区是线程共享的除了虚拟机运行时内存,在中使用类可以直接操作本机内存。 Java的内存区域 Java虚拟机在执行Java程序中会把它所管理的内存划分为若干个数据区域,这些区域有各自的用途,以及生命周期,有些依赖虚拟机进程启动而存在,有些依赖用户线程的启动和结束而建立和销毁 运行时内存 showImg(/img/bVqUpc); 程序计数器(...
摘要:结构体也可以包含结构体,就像内部类访问结构的属性和一样。。我觉得这个需要学下数据结构才能更好理解给数据类型起一个新名字则可以通过对于结构体我可以这样再通过变量名就可以简便的声明结构体变量。文件暂时过了一遍预处理器头文件就是扩展名为的文件。 ...
摘要:网络编程是指编写运行在多个设备计算机的程序,这些设备都通过网络连接起来。通常用于互联网协议,被称。编程套接字使用提供了两台计算机之间的通信机制。客户端程序创建一个套接字,并尝试连接服务器的套接字。 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE ...
摘要:最近系统整理了一套初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。正常的智商其实,学习并不需要所谓的数学逻辑好,需要英语水平棒。大周期每天学习时间五个小时以上的,建议学习周期。三学习时会遇到的坑不知道学习的重点,下面学习路线会画。 最近系统整理了一套java初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。 目录: 一、学习java的前提 二、学习java的方法 三、学习...
摘要:启动命令假定项目名字是文件服务器,用来上传和下载包目录包文件名称日志文件名称脚本名称下运行包的方式如下当前窗口被锁定,可按打断程序运行,或直接关闭窗口,程序退出当前窗口不被锁定,但是当窗口关闭时,程序中止运行。 服务器如果关机,应用比较多的话,需要重启把所有程序启动一遍。在网上找了一些脚本,综合改了一个新的出来。以后启动就可以少写一些命令了。 启动命令 假定项目名字是fileserve...
阅读 2327·2021-11-22 14:56
阅读 1459·2021-09-24 09:47
阅读 903·2019-08-26 18:37
阅读 2817·2019-08-26 12:10
阅读 1521·2019-08-26 11:55
阅读 3138·2019-08-23 18:07
阅读 2293·2019-08-23 14:08
阅读 603·2019-08-23 12:12