Java笔记

本文参考韩顺平老师的笔记,罗列了一些个重点、常见的知识点,并且补充了一些细节性的知识点,形成了本章笔记。

目录

细节

访问权限

 继承

多态​

string

finalize

关于调试

static

接口

内部类

局部内部类(成员方法中定义)

匿名内部类(参数中new重写)

成员内部类(类的成员位置定义)

静态内部类(有static修饰的成员内部类)

枚举类

异常处理

关于assert

文件操作

自动装箱拆箱

随机数

Array类

BigInteger(BigDecimal)

List类

迭代器

ArrayList(队列)​

LinkedList

Hashset

Map


细节

a%b=a-a/b*b;

计算机中存储的是补码,输出的是源码

二进制(bin):0b巴拉巴拉;

八进制(oct):0巴拉巴拉;

十六进制(hex):0x巴拉巴拉;

十进制(dec):巴拉巴拉;

1900年1月1日是星期一

若要使对象可比较,要实现Comparable接口并重写compareTo方法

注意:String的compareT是比较第一个不同字母的差值,或者长度

定制排序时new的是Comparator实现的是compare方法

import java.util.Scanner

java输入

Scanner myScanner=new Scanner(Syestem.in)

myScanner.nextInt();//输入整形

myScanner.next().charAt(0);//输入字符

Myscanner.next()//输入字符串

获取当前日期:

Date date = new Date();//获取当前日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//格式化对象

System.out.println(formatter.format(date)); //调用format方法传入当前日期对象

泛型<E>可以用在参数类型和返回值类型,但不能直接用来创建对象或数组(因为大小E大小未知,无法确定分配内存的大小)

泛型方法:

public<U,M> void eat(U u, M m) { }
方法使用泛型:
public void hi(T t) { }

Array的排序是Array.sort()

Collections类数据结构可以用Collection.sort()或者 temp.sort()

里面可以放匿名内部类:new comparetor(){compare} 或者lambda表达式(a,b){}

访问权限

 继承

super可以调用父类的构造器,属性和方法

多态

在对应父类子类中也构成覆盖

string

 

append

append追加

finalize

关于调试

static

当一个方法是static时,就是静态方法,可以直接通过类名调用

创建对象、用static属性时会类加载,final修饰该属性可以防止加载

接口

接口里的是抽象方法(抽象类里不一定是抽象方法)、还可以用default和static关键字修饰

子类拓展功能:class son implement interface{重写抽象方法}
A a=new A(){。。。}其中A是接口,这个不是实例化接口,它有{},重写了A中方法,(有时也用lambda函数   interface A{double getvalue()}       A a;    a=()->123.5  )相当于有一个隐含的类实现了A这个接口并且创建了一个对象,用其父类(A)作为其编译类型(多态)相当于class B implemens A{...}  A a=new B()  
抽象类内什么都可以有,因为它本质就是一个类,抽象方法需要用abstract声明,而接口里不需要声明,默认方法就是abstract的,变量就是static final的
抽象类和接口都不能被final,static,private修饰,因为他需要重写方法的。final的作用就是防止类被继承,防止方法被重写,防止变量被修改,防止类加载

内部类

局部内部类(成员方法中定义)

匿名内部类(参数中new重写)

成员内部类(类的成员位置定义)

静态内部类(有static修饰的成员内部类)

枚举类

枚举类若调用无参构造器,则小括号可以省略

枚举对象必须放在最前面

Annotation注解Deprecated过时的Suppress压制@interface为注解类

异常处理

关于assert

  • assert主要用在测试和调试时,用于方便知道哪里出错了(提供断言信息assert bool:"此处错误")
  • assert抛出的是错误(程序本身不能处理),不能用捕获异常(程序员导致,可以避免)的try-catch捕获

文件操作

构建文件的三种方法:

 

常用方法:

字节流是操作二进制文件,字符流是操作文本文件

new FileInputStream和FileOutputStream(file或path,true(表示追加))

read(没有参数就是返回下一个字符的ASCII,有byte[]就返回实际读取到的字节数)

write(byte[](可str.getBytes()),0,len(实际需要写的)):有就写/读,没有返回-1

最后一定要close或者flush,否则写不进去

用input时,只有file.createnewfile()才会真的创建文件,而output会自动创建

FileReader和FileWriter与上面类似:

BufferReader/Writer   不要用于操作二进制文件

读取每一行存入String:

        BufferedReader reader=new BufferedReader(new FileReader(path));

        str=reader.readLine():扩展了 ,可以按行读取,当读完就返回null,最后关闭外层流 (BufferedReader)就好,没有读取换行符。

        BufferredWriter writer=new BufferredWriter(new FileWriter(path))

        writer.newLine()可以插入换行符。

自动装箱拆箱

Integer转int:integer.intValue()

int转integer:new integer(int)、Integer.valueOf(int)

三元运算符可能会提升精度

可以将integer和int看成是一样的东西

随机数

Random random = new Random();

System.out.println("Method two:" + random.nextInt(100));//返回[0,100)的随机数

Math.random()//返回[0,1)的随机数,相当于random.nextdouble(1)

因为random返回的是【0,1),故要返回【0,6)+2->【2,8)

即a+random()*(b-a+1)

Array类

Arraylist的复制是clone()

BigInteger(BigDecimal)

List类

迭代器

Collection类数据结构特有的方法,当然还可以用for 来遍历

ArrayList(队列)

arraylist.trimToSize()可以将容量缩小到实际尺寸

arraylist.clone()可以克隆一个新的实例

LinkedList

Hashset

set.toArray()可以将set转为数组

Map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值