什么是Java?
Java 是由 Sun Microsystems 公司于 1995 年推出的一门面向对象程序设计语言。
Java 还是一个平台。Java 平台由 Java 虚拟机(Java Virtual Machine,JVM)和 Java 应用编程接口(Application Programming Interface,API)构成。
Java语言的特点
1.面向对象
2.简单性
3.编译性
4.多线程
5.分布式
6.高性能
7.开源
8.跨平台
Java跨平台原理?
不同的操作系统都有与之对应的JVM,只要在需要运行java应用程序的操作系统上,安装一个JVM,由JVM来负责Java程序在该系统中的运行。所以只需要写一个Java程序,就可以在多个不同的操作系统上执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
注意JVM是Java语言能够跨平台的前提,但是JVM本身不跨平台
三种循环的区别
1.如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
2.for循环的变量在小括号当中定义,只循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
数组具有如下三个基本特性
- 一致性:数组只能保存相同数据类型元素,元素的数据类型可以是任何相同的数据类型。
- 有序性:数组中的元素是有序的,通过下标访问。
- 不可变性:数组一旦初始化,则长度(数组中元素的个数)不可变。
数组是什么
数组(Array)是有序的元素序列。
是用于储存多个相同类型数据的集合。装箱和拆箱
基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象;
包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int。
对象是什么
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。
面向对象三大核心:
封装性
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 .
好处:1.隐藏类的细节,不允许子类或其他调用查看
2.方便加入控制语句
3.方便修改实现
4.只能通过规定方法访问
具体实现:
1.属性使用private
2.方法使用public
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
继承实现的机制
Java是静态语言,需要经过编译的过程,经过编译后将原来.java格式的源代码文件转换为.class的文件。JVM通过类加载机制,将.class文件加载到内存中,形成类的数据结构。
在类的数据结构中,会记录父类与子类的关系。
多态
多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。
多态的实现机制
父类或者接口定义的引用变量可以指向子类或者具体实现类的实例对象,由于程序调用方法是在运行期才动态绑定的,那么引用变量所指向的具体实例对象在运行期才确定。所以这个对象的方法是运行期正在内存运行的这个对象的方法而不是引用变量的类型中定义的方法。
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
重写的好处在于子类可以根据需要,定义特定于自己的行为
重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
break 关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
continue 关键字
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
什么是方法呢?
Java方法是语句的集合,它们在一起执行一个功能。
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用
方法的优点
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
代码更加简洁【不用强制转换】
- 程序更加健壮【只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常】
- 可读性和稳定性【在编写集合的时候,就限定了类型】
String
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
只要不是new出来的都放在常量池中。
操作字符串。StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
什么是抽象类?
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
同步与异步锁
通过sychronized关键字实现同步。
当多个对象操作共享数据时,可以使用同步锁解决线程安全问题。
同步:就是体现了排队的效果,就是同一时刻只能有一个线程独占资源,没有权利的排队。坏处就是效率低,但是安全。
异步:就是体现了多线程的效果,就是互相不等待,互相抢占资源。
好处是效率高,但是不安全。
既然是加锁,那么就需要有锁住的对象,一般锁的是当前对象this
那为什么同步代码块的锁对象可以是o,但是同步方法必须是this呢?
因为同步代码块同一个时刻只有一个线程进入,而同步方法可以让多个线程进入.
eclipse 快捷键
Control-Shift-T: 打开类型(Open type)。
如果你不是有意磨洋工,还是忘记通过源码树(source tree)打开的方式吧。
用eclipse很容易打开接口的实现类的,按ctrl+t会列出接口的实现类列表
Ctrl+T 快速显示当前类的继承结构
Control-Q: 回到最后一次编辑的地方
Control-O: 快速概要(quick outline)。通过这个快捷键,
你可以迅速的跳到一个方法或者属性,只需要输入名字的头几个字母。
Control-L:迅速定位到你选择的行数
Shift+Ctrl+Enter 在当前行插入空行
Alt+Enter 显示当前选择资源的属性
Ctrl+Shift+P 定位到对于的匹配符
Ctrl+[ 打开项目窗口
Ctrl + shift + B 断点快捷键
Eclipse快捷键
Ctrl + shift + 回车,在当前行的上一行,添加空行,光标可以在任意位置
Shift + 回车 在当前行的下一行,添加空行,光标可以在任意位置
Ctrl + / 注释当前行,再按则取消注释
Ctrl + Shift + / 注释当前段落
Ctrl + Shift + \ 取消当前段落的注释
Ctrl + Shift + X 把当前选中文本变成全大写
Ctrl + Shift + Y 把当前选中文本变成全小写
Ctrl + Shift + F 格式化当前代码
Ctrl + Shift + O 导包
Ctrl + I,调整缩进,使用前需要全选代码
Ctrl + 1,快速修复,点灯泡,根据需要,来选择添加什么代码
Ctrl + T 查看一个类的继承结构
Ctrl + O 查看一个类的大纲信息
Alt + Shift + S 弹出 source 菜单,比如添加构造方法,get/Set方法等
Alt + Shift + L 提取、定义局部变量
Alt + Shift + R 对类、方法、变量批量改名
Alt + 向下 当前行和下面一行交换位置(特别适用,可以省去先剪切,再粘贴了)
Alt + 向上 当前行和上面一行交换位置(特别适用,可以省去先剪切,再粘贴了)
Alt + 向左 到前一个编辑页面
Alt + 向右 到后一个编辑页面(当然是针对上面那条来说啦)
