本人在经历这两周的遭遇后,反思,得到基础很重要,现在就从零开始学习JAVA,并且记录。
基本数据类型
整型 byte int short long 分别是 1个,4 个,2个,8个字节。创建long 类型时要加L。
浮点型 float, double。默认小数是double, 编译出错,float类型声明后要加f。
字符型 char 通过unicode编码,可以实现int与字符之间的转化,(\123)8进制的字符,(\u0025)16进制的字符。
布尔型 boolean 只有 true和false 用来做条件判断。
变量
变量表示名
可以以下划线“_”,任意字母,“$”开头,但是不能以数字和关键字开头。
1.关键字 instanceof 返回boolean值,判断前一个对象是否继承或实现后一个对象或接口。
2.transient 修饰变量,类在实现序列化Serializable后,被修饰的变量将不会被序列化。
3.defalut 修饰接口中的方法,可以变成默认方法(同包能可以访问,子类不可以访问,protected同包能访问,子类也可以访问(子类在别的包下,那么该包下的类是不能访问子类中的protected))。switch中也可以使用,用于默认值。
成员变量和局部变量
成员变量方法体外的变量可以用修饰符去修饰,这些修饰可以加一个访问权限,局部变量不 能用修饰符修饰。
常量用final声明
常量只能赋值一次,不能修改。
运算符
&&与& &&只判断false,到false就停止,&会一直判断到结束。
String 字符串操作
indexof()搜索第一次出现的索引。 lastindexof()最后一次出现的索引。找不到返回 -1。
substring(begin,end)截取字符串 从开始到结尾。
trim()去除前置空格和后置空格。
startsWith()和endsWith()判断开始字符串是否与参数相同和结束的字符串是否和参数相同。
equalsIgnoreCase()忽略大小写的equal(),字符和长度相同。
compareTo()比较字典数。
格式化成string类型
format有很多方式,%t 什么的。
String 使用+运算符的时候会创建新string并赋值。
append()如果参数是自定义类,那么调用其toString方法。
insert(5,"a")在索引5处插入a
delete(start,end)在索引start开始一直删除到end-1 ,end不存在就删除到尾。
数组
Arrays.fill(object[],object)替换数组中的元素
Arrays.copyof()拷贝数组,长度可以设置。
数组查询
binarySearch(object[]),object) 返回索引。
类
方法中定义的变量是局部变量,方法外定义的变量是全局变量。
this关键字是一个本类应用。
方法中参数如果和成员变量同名,会覆盖成员变量在方法中的作用域。
静态方法不能使用this。
finalize()方法对象销毁是先调用。
compareTo()函数就是 原来的值减去参数。
Integer 里方法 intValue(), valueOf(),parseInt()
继承
继承方法重写,只能扩大修饰符返回不能缩小范围。
在构造方法调用的时候,先调用最原始的类,再调用第一级子类,第二级子类,最后到最终子类。
方法重载
不定长参数 public void add(int...a)看做(int[] a)
多态
抽象类和接口
final修饰后,引用不可改变。final类中成员变量可以不是final,方法默认为final
内部类
内部类可以使用外部类成员变量和方法
不能直接new内部类,通过外部类去创建内部类。
内部类如果参数和外部类重名,要获得外部类引用才能使用外部类的参数。内部类中不能有静态方法和变量。
局部内部类
和内部类一样,但是声明在方法中,所以外部类不能在除该方法外之外访问。
静态内部类
可以有静态方法和变量。
自定义异常
继承异常类,方法通过throws抛出异常,方法中通过throw new来生成异常。异常处理要有顺序。
HashSet不保证顺序,TreeSet实现了排序接口,可以实现排序。类要实现Comparable<Integer>。
TreeMap的Value不能为null。
流
audioinputstream 音频流,pipedinputstream线程间通讯,sequenceinputstream合并流。
反射
可以获得类的信息。