5分钟快速了解Java入门

Posted huarong777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5分钟快速了解Java入门相关的知识,希望对你有一定的参考价值。

源代码组织方式

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

E:WorkspacesMyEclipse

10JavaStudysrccomhappyframeworkjavastudyhelloHello.java

 

技术图片

 

 

关于class有如下几点规则:

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

 

App.java

 

技术图片

 

 

2

最终的项目结构

 

技术图片

 

 

3

数据类型

8种原子类型

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

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

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

技术图片

 

 

4

运算符

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

5

字符串

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

技术图片

 

 

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

技术图片

 

 

6

数组

声明语法

DataType[] name 或 DataType name[]。

初始化语法

DataType[] name = new DataType[length]。

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

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

技术图片

 

 

多维数组

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

控制结构

  1. 条件:if-else if-else、switch-case-default和三元运算符(?:)。
  2. 循环:while、do-while、for和foreach。
  3. Labeled block。

 

技术图片

 

 

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

方法

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

Java支持变长方法参数。

技术图片

 

 

7

 

技术图片

 

 

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

静态成员

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

技术图片

 

 

8

继承

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

技术图片

 

 

9

重写

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

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

 

技术图片

 

 

技术图片

 

 

10

包的名字和项目路径下的目录路径相对应,比如:项目路径为:C:Study,有一个Java源文件位于:C:StudycomhappyframeworkstudyApp.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.*。

 

技术图片

 

 

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 不能定义静态成员。

代码示例

技术图片

 

 

技术图片

 

 

特殊的inner class:local class

技术图片

 

 

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

特殊的local class:anonymous class

技术图片

 

 

12

常量

不废话了,直接看代码:

技术图片

 

 

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

接口

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

技术图片

 

 

13

枚举

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

技术图片

 

 

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

技术图片

 

 

14

异常

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

技术图片

 

 

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

15

装箱和拆箱

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

技术图片

 

 

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

16

泛型

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

泛型方法

测试代码

技术图片

 

 

调用泛型方法

 

技术图片

 

 

输出的结果是

 

技术图片

 

 

17

泛型类

测试代码

技术图片

 

 

调用代码

 

技术图片

 

 

输出结果

 

技术图片

 

 

18

泛型接口

测试代码

技术图片

 

 

调用代码

技术图片

 

 

输出结果

技术图片

 

 

19

类型参数约束

测试代码

技术图片

 

 

调用代码

技术图片

 

 

输出结果

技术图片

 

 

类型搽除过程

  1. 将泛型定义中的类型参数去掉。

 

技术图片

 

 

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

技术图片

 

 

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

技术图片

 

 

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

技术图片

 

 

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

以上是关于5分钟快速了解Java入门的主要内容,如果未能解决你的问题,请参考以下文章

Java SecurityApache Shiro:十分钟快速入门

JavaSE学习总结——Java面向对象十分钟入门

五天入门SpringBoot—Java SpringBoot 基础--helloworld,15分钟超快速入门

五天入门SpringBoot—Java SpringBoot 基础--helloworld,15分钟超快速入门

JavaSE第01篇:Java快速入门

5分钟快速入门,用Python做SQLite数据库开发,附代码适合初学