转义字符
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
++ --
++自加运算符是单目运算符(一元运算符),只有一个操作数。如果把++放在左边,则先把操作数加1,然后再运算;如果把++放在右边,则先运算,然后再把操作数加1。
--自减运算符也是单目运算符(一元运算符),只有一个操作数。用法与++类似,只是将操作数的值减1;
&&
- 当
左
表达式的结果为fasle
时,那右表达式不会
执行,直接返回左
表达式的结果(false
) - 当
左
表达式的结果为true
时,那右
表达式一定会
执行,并返回右
表达式的结果
&
- 当
左
表达式的结果为fasle
时,右
表达式依旧会
执行,并直接返回左
表达式的结果(false
) - 当
左
表达式的结果为true
时,那右表达式一定会
执行,并返回右
表达式的结果
||
- 当左表达式的结果为true时,那·右表达式不会执行,并直接返回左表达式的结果(true)
- 当左表达式的结果为false时,那右表达式一定会执行,并返回右表达式的结果
|
- 当左表达式的结果为true时,那右表达式依旧会执行,并直接返回左表达式的结果(true)
- 当左表达式的结果为false时,那右表达式一定会执行,并返回右表达式的结果
+运算符
作用1:求和,
当 + 运算符两边都是数字类型
的时候,求和。
作用2:字符串拼接,
当 + 运算符两边的“任意一边
”是字符串类型
,那么这个+会进行字符串拼接操作。
编译器
编译器可以是任何一个能将一个文本翻译为另一个文本的程序。
编译器读取源代码生成二进制文件。
对于Java语言来说,它最常用的编译器就是javac指令,可以在DOS(Disk Operating System)窗口中使用,该指令包含在JDK(Java Development Kit,)目录中,使用javac指令可以将.java源文件翻译成.class字节码文件,.class文件可以装载到JVM(Java Virtual Machine)的类加载器中运行,可以跨平台运行。
Java 源码编译由以下三个过程组成:
- 分析和输入到符号表
- 注解处理
- 语义分析和生成class文件
前端编译器:把*.java文件转变成*.class文件
后端运行期编译器(JIT编译器,Just In Time Compiler):把字节码转成机器码
静态提前编译器(AOT编译器,Ahead Of Time Compiler):把*.java编译成本地机器码
Object
1.Object类是所有类的父类,位于java.lang包中。
2.数组也是Object类的子类。
3.Object类的常用方法有:
1. clone()
保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。
2. getClass()
final方法,返回Class类型的对象,反射来获取对象。
3. toString()
该方法用得比较多,一般子类都有覆盖,来获取对象的信息。
4. finalize()
该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。
5. equals()
比较对象的内容是否相等
6. hashCode()
该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
7. wait()
wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生。
其他线程调用了该对象的notify方法。
其他线程调用了该对象的notifyAll方法。
其他线程调用了interrupt中断该线程。
时间间隔到了。
此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。
8. notify()
该方法唤醒在该对象上等待的某个线程。
9. notifyAll()
该方法唤醒在该对象上等待的所有线程。
finalize()方法:垃圾回收器准备释放内存的时候,会先调用finalize()。
(1).对象不一定会被回收。
(2).垃圾回收不是析构函数。
(3).垃圾回收只与内存有关。
(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。