(java入门基础知识)(java从入门到精通)

(java入门基础知识)(java从入门到精通)

你好,世界!

源代码组织方式

Java程序由package+class组成,package对应目录的相对路径,class对应文件,如

E:\Workspaces\MyEclipse

10\JavaStudy\src\com\happyframework\javastudy\hello\Hello.java

(java入门基础知识)(java从入门到精通)

关于class有如下几点规则:

  1. 文件的名字必须和class的名字一致(public级别的class名字)。
  2. 文件必须只包含一个public访问基本的class(可以包含多个非public级别的class)。
  3. package名字必须和目录一致。
  4. 1
  5. 入口方法

App.java

(java入门基础知识)(java从入门到精通)

2

最终的项目结构

(java入门基础知识)(java从入门到精通)

3

数据类型

8种原子类型

  1. 整数类型:byte、short、int和long。
  2. 小数类型:float和double。
  3. 字符类型:char。
  4. 布尔类型:bool。

除此之外的是interface、class和array。

小数类型的常量默认是double类型,声明float类型的常量需要使用F作为后缀。

(java入门基础知识)(java从入门到精通)

4

运算符

  1. 算术运算符:+、-、*、/ 和 %,两个整数相除,结果还是整数。
  2. 赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、~=、^=、>>=、<<= 、 <<<=、++ 和 --。
  3. 比较运算符:==、!=、>、>=、< 和 <=。
  4. 逻辑运算符:&&、|| 和 !。
  5. 位运算符:&、|、~、^、>>、<< 和 <<<。

5

字符串

String是拥有“值语义”的引用类型,字符串常量实现了“享元模式”,equals会按照内容进行比较,==按照地址比较。

(java入门基础知识)(java从入门到精通)

为了高效的修改字符串Java引入了StringBuffer。

(java入门基础知识)(java从入门到精通)

6

数组

声明语法

DataType[] name 或 DataType name[]。

初始化语法

DataType[] name = new DataType[length]。

DataType[] name = new DataType[] { element1, element2, ...elementn }。

DataType[] name = { element1, element2, ...elementn }。

(java入门基础知识)(java从入门到精通)

多维数组

只有不等长多维数组DataType[][],没有DataType[xxx, xxx]。

控制结构

  1. 条件:if-else if-else、switch-case-default和三元运算符(?:)。
  2. 循环:while、do-while、for和foreach。
  3. Labeled block。
(java入门基础知识)(java从入门到精通)

最近觉得label是个不错的东西,最起码多了一种选择。

方法

Java中所有的赋值和方法调用都是“按值“处理的,引用类型的值是对象的地址,原始类型的值是其自身。

Java支持变长方法参数。

(java入门基础知识)(java从入门到精通)

7

(java入门基础知识)(java从入门到精通)

注意:调用自身的构造方法是用this(xxx,xxx,...)来完成,且必须位于第一行。

静态成员

Java中类似静态构造方法的结构,称之为:静态初始化代码块,与之对应的是实例初始化代码块,见下例:

(java入门基础知识)(java从入门到精通)

8

继承

继承使用 extends,抽象类和抽象方法使用abstract声明,向下转型使用 (ChildType)instance,判断是否是某个类型使用 instanceof,见下例:

(java入门基础知识)(java从入门到精通)

9

重写

Java中的重写规则比较灵活,具体如下:

  1. 除了 private 修饰之外的所有实例方法都可以重写,不需要显式的声明。
  2. 重写的方法为了显式的表达重写这一概念,使用 @Override进行注解。
  3. 重写的方法可以修改访问修饰符和返回类型,只要和父类的方法兼容(访问级别更高,返回类型更具体)。
  4. 可以使用final将某个方法标记为不可重写。
  5. 在构造方法中使用 super(xxx, xxx)调用父类构造方法,在常规实例方法中使用 super.method(xxx, xxx)调用父类方法。
  6. Java不支持覆盖(new)。
(java入门基础知识)(java从入门到精通)
(java入门基础知识)(java从入门到精通)

10

包的名字和项目路径下的目录路径相对应,比如:项目路径为:C:\Study,有一个Java源文件位于:C:\Study\com\happyframework\study\App.java,那么App.java的包名字必须为:com.happyframework.study,且 App.java 的第一行语句必须为:package com.happyframework.study。

Java支持三种导入语法:

  1. 导入类型:import xxx.xxx.xxxClass。
  2. 导入包:import xxx.xxx.xxx.*。
  3. 导入静态成员:import static xxx.xxx.*。
(java入门基础知识)(java从入门到精通)

11

访问级别

Java支持四种访问级别:public、private、protected 和 default(默认),类型和接口只能使用public 和 default,成员和嵌套类型可以使用所有,下面简单的解释一下 protected 和 default。

  • protected 修饰过的成员只能被自己、子类和同一个包里的(不包括子包)其他类型访问。
  • default 修改过的类型或成员只能被自己和同一个包里的(不包括子包)其他类型访问。

嵌套类

Java支持如下几种嵌套类:

  1. nested class,定义在类型内部的类型。
  2. static nested class,使用 static 声明的 nested class,static nested class 可以访问所有外部类的静态成员。
  3. inner class,没有使用 static 声明的 nested class,inner class 可以访问所有外部类的实例成员,inner class 不能定义静态成员。

代码示例

(java入门基础知识)(java从入门到精通)
(java入门基础知识)(java从入门到精通)

特殊的inner class:local class

(java入门基础知识)(java从入门到精通)

除了inner class的规则之外,local class可以访问局部final变量,在Java8中有更多的改进。

特殊的local class:anonymous class

(java入门基础知识)(java从入门到精通)

12

常量

不废话了,直接看代码:

(java入门基础知识)(java从入门到精通)

有一点需要注意的是:只有一种情况Java的常量是编译时常量(编译器会帮你替换),其它情况都是运行时常量,这种情况是:静态类型常量且常量的值可以编译时确定。

接口

Java的接口可以包含方法签名、常量和嵌套类,见下例:

(java入门基础知识)(java从入门到精通)

13

枚举

Java枚举是class,继承自java.lang.Enum,枚举中可以定义任何类型可以定义的内容,构造方法只能是private或package private,枚举成员会被编译器动态翻译为枚举实例常量,见下例:

(java入门基础知识)(java从入门到精通)

调用枚举的构造方法格式是:常量名字(xxx, xxx),如果构造方法没有参数只需要:常量名子,如:

(java入门基础知识)(java从入门到精通)

14

异常

Java中的异常分为checked和unchecked,checked异常必须声明在方法中或被捕获,这点我觉得比较好,必定:异常也是API的一部分,见下例:

(java入门基础知识)(java从入门到精通)

所有继承Exception的异常(除了RuntimeException和它的后代之外)都是checked异常。

15

装箱和拆箱

Java提供了原始类型对应的引用类型,在1.5之后的版本还提供了自动装箱和自动拆箱,结合最新版本的泛型,几乎可以忽略这块。

(java入门基础知识)(java从入门到精通)

注意:自动装箱和自动拆箱是Java提供的语法糖。

16

泛型

Java的泛型是编译器提供的语法糖,官方称之为:类型参数搽除,先看一下语法,然后总结一点规律:

泛型方法

测试代码

(java入门基础知识)(java从入门到精通)

调用泛型方法

(java入门基础知识)(java从入门到精通)

输出的结果是

(java入门基础知识)(java从入门到精通)

17

泛型类

测试代码

(java入门基础知识)(java从入门到精通)

调用代码

(java入门基础知识)(java从入门到精通)

输出结果

(java入门基础知识)(java从入门到精通)

18

泛型接口

测试代码

(java入门基础知识)(java从入门到精通)

调用代码

(java入门基础知识)(java从入门到精通)

输出结果

(java入门基础知识)(java从入门到精通)

19

类型参数约束

测试代码

(java入门基础知识)(java从入门到精通)

调用代码

(java入门基础知识)(java从入门到精通)

输出结果

(java入门基础知识)(java从入门到精通)

类型搽除过程

  1. 将泛型定义中的类型参数去掉。
(java入门基础知识)(java从入门到精通)

2.将T换成extends指定的约束类型,默认是Object。

(java入门基础知识)(java从入门到精通)

3.如果有非泛型类型继承或实现了泛型基类或接口,而且进行了重写,根据情况,编译器会自动生成一些方法。

(java入门基础知识)(java从入门到精通)

4.根据泛型参数的实际参数搽除调用代码。

(java入门基础知识)(java从入门到精通)

这里说的不一定正确,特别是Java泛型的约束支持&(如:可以约束实行多个接口),不过过程估计差别不大,我没有看Java语言规范,这里只是大概的猜测。

然后今天就讲到这里啦,大家记得点赞收藏,分享转发,关注小姐姐哦!

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者我爱JAVA所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(java入门基础知识)(java从入门到精通)
本文链接:https://www.51qsb.cn/article/m8vuu.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-02-17
下一篇2023-02-17

你可能还想知道

发表回复

登录后才能评论