Skip to content

Commit cc076ee

Browse files
committed
java basic
1 parent 816bc1c commit cc076ee

File tree

3 files changed

+133
-35
lines changed

3 files changed

+133
-35
lines changed

languages/java/basic/JavaSE(一).md

Lines changed: 93 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,3 @@
1-
# Java编程语言概述
2-
3-
# Java基础语法
4-
5-
# Java数组
6-
7-
# 面向对象编程
8-
9-
# 高级类特性
10-
11-
# Java API
12-
13-
# 异常处理
14-
15-
# 集合与泛型
16-
17-
# Java IO流
18-
19-
# Java多线程
20-
21-
# Java Reflection(Java反射)
22-
23-
# 网络编程
24-
25-
# Java8 新特性
26-
27-
# Java9/Java10/Java11新特性
28-
29-
# JavaSE项目
30-
311
## 1 Java数据类型
322

333
java数据分为两种:基本数据类型(Primitive Type)和引用数据类型(Reference Type)
@@ -81,7 +51,7 @@ Object o=new Object(); // 强引用
8151

8252
---
8353

84-
## 2 变量
54+
## 2 变量与常量
8555

8656
Java支持的变量类型有:成员变量和局部变量
8757

@@ -100,7 +70,7 @@ public class Variable{
10070
}
10171
```
10272

103-
1. 类变量(静态变量)
73+
1. 类变量(静态变量,也称常量
10474

10575
> 独立于方法之外,用static修饰;存储于方法区中,生命周期与当前类相同;`为什么是类变量,则需要看完JVM的对象生命周期`
10676
> 无论创建多少对象,对象只拥有类变量的一份拷贝
@@ -116,11 +86,43 @@ public class Variable{
11686
11787
### 2.2 局部变量
11888

119-
在方法体中的变量
89+
1. 声明在方法、构造方法或者语句块中,在方法、构造方法、或者语句块 **被执行的时候创建** ,当它们**执行完成后,变量将会被销毁**
90+
2. 如果方法体中传递的不是引用类型,则只会值传递,而不会改变方法体外的变量值
91+
3. **没有默认值** ,所以局部变量被声明后, **必须经过初始化** ,才可以使用
12092

121-
---
93+
### 2.3 常量(JVM中有详细解释)
94+
95+
常量通常也被称为`final变量`,在整个程序中只会被分配一次,为所有对象共享
96+
97+
定义类型:`final 数据类型 常量名称(=值)
98+
99+
#### 2.3.1 编译时常量
100+
101+
如:
102+
103+
```java
104+
private final static String UER_NAME = "shadow";
105+
```
106+
107+
不需要在运行时确定,即编译期类不会初始化,你可以当做这常量是独立的,不会依赖类
108+
109+
#### 2.3.2 运行时常量
110+
111+
```java
112+
private final static Integer UER_NAME_LENGTH = "shadow".length();
113+
```
114+
115+
运行时才会确定,即需要类的初始化才会完成
116+
117+
#### 2.3.3 区别
122118

119+
编译期常量如果更改,那么所有引用到该常量的文件都需要更改;如果是运行时常量,则不需要
123120

121+
比如定义不是内部类文件dog和cat,cat引用dog的编译期常量,一旦dog修改值,用javac编译,cat依旧是旧值
122+
123+
所以推荐常量使用enum,不用整个再次编译(有待证实,没有部署图床,所以没写代码)
124+
125+
---
124126

125127
## 3 修饰符
126128

@@ -200,12 +202,68 @@ Java中无法引用没有包、默认包和顶级类,`顶级类导入只能由
200202

201203
##### 3.5.2.1 使用场景
202204

203-
对于类,如果处于安全和效率考虑可以采用final,如string
205+
如果处于`安全和效率`考虑可以采用final,如string
204206

205207
#### 3.5.3 abstract
206208

209+
功能是定义一个`抽象类`,abstract和interface类似,主要是区分编程中的`概念
210+
211+
##### 3.5.3.1 abstract class 和 interface
212+
213+
> 比如需要设计一个动物,动物能够吃喝,然后对动物可以进行拓展,比如猫与狗;所以动物就是抽象,吃喝就是抽象方法,因为不是对应具体的人
214+
215+
> 这种动物最好是用abstract class(猫是动物的子类,所以不用interface),而不是用interface,因为Java是单一继承,多实现。
216+
217+
> 如果动物还要能够骑车或赛马,则可以用interface,因为不是所有的动物都能骑车;
218+
219+
##### 3.5.3.2 abstract class
207220

221+
1. 不能被实例化,因为是抽象的,所以不能new
222+
2. 可以有变量和方法,方法可以是抽象的和非抽象的,且抽象方法不能具体实现
223+
3. 抽象方法不能声明成static和final
224+
4. 如果子类不是抽象类,则必须实现父类的所有抽象方法;如果子类是抽象类,则不用
225+
226+
##### 3.5.3.3 abstract interface
227+
228+
abstract对于接口来说是多余的,一般不这么使用
208229

209230
#### 3.5.4 synchronized 与 volatile
210231

211232
在高并发与多线程中
233+
234+
## 4 运算符
235+
236+
### 4.1 关系运算符
237+
238+
简单,自己百度
239+
240+
### 4.2 位运算符(主要用于算法)
241+
242+
243+
| 类型 | & || ^ | ~ | << | >> | >>> |
244+
| ---------- | ---------- | ---------- | --------- | ------ | ----------------------------- | -------------------- | ---------------------- |
245+
| 名称 ||| 异或 | 取反 | 左移 | 右移 | 无符号右移 |
246+
| 按位操作 | 都是1置1 | 都是0置0 | 不同置1 | 取反 | 5<<2左移两位,类似于乘法5*4 | 5>>2右移两位,除法 | 5>>>2,无符号右移两位 |
247+
248+
249+
* ">>>"
250+
251+
无符号右移,移动之后由0填充
252+
253+
* ">>"
254+
255+
有符号右移,移动之后由左边的符号位填充
256+
257+
* "<<"
258+
259+
有符号左移,移动之后右边末尾由0填充
260+
261+
262+
263+
### 4.3 instanceof 运算符
264+
265+
用于判断一个对象是否是一个特定的类型`( Object reference variable ) instanceof (class/interface type)`
266+
267+
```
268+
boolean type = shadow instanceof String; // 判断 shadow是 String 类型,所以返回真
269+
```
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
## 我发现面试官总是喜欢让我做一些我根本没有做过的事情?
2+
3+
> 天马行空的面试官,那么我该如何天马行空的回击?
4+
5+
> 你没去过宇宙,那么现在我需要你给我讲述下你脑中的宇宙是怎样的?
6+
7+
8+
9+
比如说,如果你有千亿级的数据库,你需要去换数据库,你该怎么去迁移这么高的数据量?
10+
11+
如果说你有个支付的功能,双十一当天几百万的并发量同时进行,你又设计你的系统?
12+
13+
14+
听说你有代码洁癖,那么如果是你该怎么从头到尾的去设计一个项目?
15+
16+
17+
不同的关键字abstract interface等如何正确使用?
18+
19+
项目文件夹该如何去设计,更能清晰明了
20+
21+
22+
《编程思想》
23+
24+
《设计模式》
25+
26+
《Effective Java》
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
## 面向对象
2+
3+
4+
### 继承
5+
6+
方法和变量必须要继承吗
7+
8+
9+
implement
10+
11+
接口的方法必须要实现吗
12+
13+
14+
**Open Closed Principle** 开放关闭准则

0 commit comments

Comments
 (0)