目录
IDEA
关于自动保存
未保存提醒
让代码变亮点
Java
显示project快捷键alt+1
显示structure(查看类中的方法等)alt+7
Ctrl +P查看方法可传的参数等信息
*水平制表符>\t代表四个空格 *
win10画图
选中图形—>移动: CTRL+左键
常量:
输出字符常量要求有且只能有一个
变量:
int a=1;//这其实是两行代码:
//-->
int a;
a=10
因为int是默认的整型, 所以只要是数字运算, 你能得到的最小整型就是int.
算术运算符
a+=b 等价于 a=a+b
想要获取小数必须有浮点型参与运算
System.out.println(10 / 3.0); 3.3333335
System.out.println(10 / 3*1.0); 3.0
获取该三位数的各个位数数字.
/*
规律: 例如: 1153
个位: 153 / 1 % 10 = 3 商15, 余3
十位: 153 / 10 % 10 = 5
百位: 153 / 100 % 10 = 1
*/
int ge = num / 1 % 10;
int shi = num / 10 % 10;
int bai = num / 100 % 10;
三元运算符:
选择结构
if语句:
测试代码的小技巧, 测试3类值:
正确的值
非法值
边界值
break
break的作用是结束当前它所在的语句体,并不是结束整个main方法
for循环
循环中的初始条件,判断条件和控制条件都可以根据需求任意变化,不用执着于某个形式 |
数组和方法
- 1.int类型数组, 元素默认值是: 0
2.double类型的数组, 元素默认值是: 0.0
3.boolean类型的数组, 元素默认值是: false
4.String类型的数组, 元素默认值是: null
面向对象
- 何为对象何为类? 我的理解是:类是雕塑,对象是生命
- 面向对象的三大特征: 封装>继承>多态
- 封装包含但不限于private
构造方法
- 简单来说就是为了创建对象的
没有构造方法时,可以通过调用成员变量的方式赋值,但比较麻烦,所以有了构造方法.
不写构造,系统会默认给一个空参构造;
如果写了一个带参构造,得自己补一个空参构造
继承
- 如果一个类继承了父类,那么在创建这个类的对象时会在堆内存先开辟父类空间(即使没有new父类的对象)super代表了父类空间的标识但不是引用,因为没有new
static
- static修饰的内容是跟类同时加载的,优先于对象和本类中的其他方法,所以在静态方法中调用静态方法是不能用 this. 和super. 调用的,所以静态类最好只通过 类名. 的形式调用
接口
成员特点:
接口中有且只能有常量或者抽象方法, 原因是因为:
•成员变量有默认修饰符:public static final
•成员方法有默认修饰符:public abstract
注意: 因为接口主要是扩展功能的, 而没有具体存在, 所以 接口中没有构造方法
记忆: JDK1.8的时候, 接口中加入了两个新的成员: 静态方法, 默认方法(必须用default修饰).
1.8新增
public static void jump() {
}
public default void jump() {
}
包
- 导包两种格式:*和类名
- 全类名=包名+类名
- 不采用导包的方式该如何创建Scanner类呢?Java.util…
- java.lang下的类直接用,不用导包
常用API:
Object类
- equals方法传入的是Object类的对象
- 注意: 实际开发中, 我们认为如果同一个类的两个对象, 各个属性值都相同, 那么它们就是同一个对象.
工具类:
- 所有工具类构造方法私有化
- 成员都用static修饰
Arrays类
属于工具类
Calendar类
Calendar是抽象类需要使用getInstance方法获取实例
集合:
长度可变,用来存储同类型的数据
接口与接口之间是继承关系
Collection:
collection包含:List集合Set集合
包含的常用方法:
public boolean add(E e) 添加元素.
public boolean remove(Object obj) 从集合中移除指定的元素.
public void clear() 清空集合对象
public boolean contains(Object obj) 判断集合中是否包含指定的元素
public boolean isEmpty() 判断集合是否为空
public int size() 获取集合的长度, 即集合中元素的个数
List接口
List集合的元素特点是: 有序, 可重复, 元素有索引.
实现: ArrayList LinkedList…
List集合中的特有成员方法:
public void add(int index, E element); 在指定的位置插入指定的元素
public E remove(int index); 根据索引, 移除指定的元素, 并返回此元素.
public E set(int index, E element) 修改指定索引处的元素未指定的值, 并返回修改前的元素.
public E get(int index) 根据索引, 获取其对应的元素.
细节:
上述的四个方法, 涉及到的索引如果不存在, 则会报: IndexOutOfBoundsException(索引越界异常)
List集合的子类
ArrayList
底层数据结构是数组
LinkedList
底层数据结构是链表
LinkedList的独有方法有哪些?
public void addFirst(E e) 往列表的开头插入指定的元素
public void addLast(E e) 往列表的末尾插入指定的元素
public E removeFirst() 删除列表中的第一个元素, 并返回被删除的元素
public E removeLast() 删除列表中的最后一个元素, 并返回被删除的元素.
public E getFirst() 返回列表的第一个元素
public E getLast() 返回列表的最后一个元素
Set接口
特点:接口,无序,唯一,无索引(不对外暴露)
如何实现:HashSet, TreeSet…
Collections工具类
常用方法:
sort(List list)
reverse(List list)
shuffle(List list)
Map
Map集合是双列集合
异常
思考题:编译期异常和运行时异常有什么不同(两点)
IO流:
- (在不涉及到return时) try,catch中的代码如果有问题 在执行到有问题的部分会报错 然后跳出来继续执行try,catch之外的代码
P 359: 9分20秒,
1.在调用close后,流就变成了垃圾对象,需要进行回收,但是对于这种垃圾, GC第一次进行垃圾回收时,并不是直接回收 而是先做个标记 到第二次回收时间节点到了的时候进行二次标记,然后才会回收
2.而如果将对象标记为null,则GC会优先回收以节约资源
线程:
run方法有异常只能try不能抛
主线程就是main即Thread.currentThread()对应的线程
守护线程结束会有延迟是因为CPU切换需要时间
网络编程:
P315 14分:关于如何测试程序bug的方法之一(分段测试法)
一般来说没有客户端和服务器端交互的部分代码,不用写flush
反射_注解:
反射:
反射指的就是在程序的运行期间, 通过==类的字节码文件对象==, 来使用类中的成员的一项技术,第一步永远是创建字节码文件对象
ClassLoader是抽象类
字节码文件对象也是对象,所以可以调用方法,只有类有字节码文件
Field 成员字段,变量(set一次只能设置一个值)
Constructor 构造器
Method 成员方法(invoke 调用激活)
上述三个,它们都是通过class类获得的
反射中创建对象:
公共构造创建空参对象,直接创造字节码文件对象然后newInstance就行了,Class创建对象只能传空参
私有构造创建带参对象需要Constructor,要加上暴力反射
Field,Method在使用私有成员时都需要暴力反射
类型E继承自Object,也就是说E的class文件就是Object的class文件
• 注解本质上就是一个接口,该接口默认继承Annotation接口
• AnnoationElement接口的方法被class,field,method,constructor实现
Properties
Properties 就是一个双列集合,且里面都是字符串类型的数据,拿出来要记得转型
XML:
xmlns :表示引入
<a:students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:a="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
>
<a:student number="heima_0001">
<a:name>tom</a:name>
<a:age>18</a:age>
<a:sex>female</a:sex>
</a:student>
</a:students>
前三行是用来引入约束的
Xsi(XMLSchema-instance)是规定写法不用纠结,第一行相当于引入前缀