资讯专栏INFORMATION COLUMN

Java程序设计笔记

microcosm1994 / 2062人阅读

摘要:对象的自动清除对象回收是由垃圾回收线程负责方法可以要求系统进行垃圾回收,仅仅是建议系统没有析构方法,但的有类似方法系统在回收时会自动调用对象的方法子类的方法可以在里面释放系统资源,一般来说,子类的方法中应该调用父类的方法。

对象的自动清除

对象回收是由垃圾回收线程负责

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

相关文章

  • 大部分程序员都记不住的注解,Idea 云笔记却能轻松记住

    摘要:只因技术种类繁杂众多层出不穷,程序员只有靠不断的学习才能不落后于技术,被工作淘汰。特此推荐给大家。 99%的程序员每天都是先学习,后工作,不然完成不了工作。只因技术种类繁杂众多、层出不穷,程序员只有靠不断的学习才能不落后于技术,被工作淘汰。我就是这其中一员,深得体会其中的「疼并快乐」,在...

    ARGUS 评论0 收藏0
  • Java虚拟机笔记-内存区与内存溢出

    摘要:小结程序计数器和虚拟机栈是线程私有的,而堆和方法区是线程共享的除了虚拟机运行时内存,在中使用类可以直接操作本机内存。 Java的内存区域 Java虚拟机在执行Java程序中会把它所管理的内存划分为若干个数据区域,这些区域有各自的用途,以及生命周期,有些依赖虚拟机进程启动而存在,有些依赖用户线程的启动和结束而建立和销毁 运行时内存 showImg(/img/bVqUpc); 程序计数器(...

    Ocean 评论0 收藏0
  • java程序员的c语言学习笔记,一文快速了解

    摘要:结构体也可以包含结构体,就像内部类访问结构的属性和一样。。我觉得这个需要学下数据结构才能更好理解给数据类型起一个新名字则可以通过对于结构体我可以这样再通过变量名就可以简便的声明结构体变量。文件暂时过了一遍预处理器头文件就是扩展名为的文件。 ...

    FuisonDesign 评论0 收藏0
  • Java学习笔记7-网络编程

    摘要:网络编程是指编写运行在多个设备计算机的程序,这些设备都通过网络连接起来。通常用于互联网协议,被称。编程套接字使用提供了两台计算机之间的通信机制。客户端程序创建一个套接字,并尝试连接服务器的套接字。 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE ...

    lufficc 评论0 收藏0
  • Java初学者最佳的学习方法以及会遇到的坑(内含学习资料)!

    摘要:最近系统整理了一套初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。正常的智商其实,学习并不需要所谓的数学逻辑好,需要英语水平棒。大周期每天学习时间五个小时以上的,建议学习周期。三学习时会遇到的坑不知道学习的重点,下面学习路线会画。 最近系统整理了一套java初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。 目录: 一、学习java的前提 二、学习java的方法 三、学习...

    Half 评论0 收藏0
  • Centos学习笔记14 - java程序启动脚本

    摘要:启动命令假定项目名字是文件服务器,用来上传和下载包目录包文件名称日志文件名称脚本名称下运行包的方式如下当前窗口被锁定,可按打断程序运行,或直接关闭窗口,程序退出当前窗口不被锁定,但是当窗口关闭时,程序中止运行。 服务器如果关机,应用比较多的话,需要重启把所有程序启动一遍。在网上找了一些脚本,综合改了一个新的出来。以后启动就可以少写一些命令了。 启动命令 假定项目名字是fileserve...

    roland_reed 评论0 收藏0

发表评论

0条评论

microcosm1994

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<