Java学习笔记_第一阶段_1.1 Java概述
1.1 Java概述
如何快速学习Java技术
Java历史
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
任职于Sun微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的编程语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun微系统放弃了该项计划。随着1990年代互联网的发展,Sun微系统看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
Java特点
-
面向对象(oop)
-
强类型机制、异常处理、垃圾的自动收集等
-
跨平台性:因为有了JVM,同一个Java程序在三个不同的操作系统中都可以执行
graph TD; A(Test.jave程序) --编译 javac--> B(Test.class); B --运行 java--> C1(Windows操作系统); B --运行 java--> C2(Linux操作系统); B --运行 java--> C3(Mac操作系统); C1 --- D1(Win版的JVM); C2 --- D2(Linux版的JVM); C3 --- D3(Mac版的JVM);Java核心机制-Java虚拟机[JVM java virtual machine]
基本介绍:
1)JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器,包含在JDK中。
2)对于不同的平台,有不同的虚拟机。
3)Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
-
解释型
解释型语言:编译后的代码,不能直接被机器执行,需要解释器来执行 eg:javascript,PHP,java
编译型语言:编译后的代码,可以直接背机器执行 eg:c,c++
开发工具
-
editplus
-
notepad++
-
Sublime Text
-
IDEA
-
eclipse
Java运行机制
//对代码的相关说明
//1. public class Hello 表示Hello是一个类,是一个public公有的类
//2. Hello{ } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() {} 表示方法的开始和结束
//5. System.out.println("hello,world~"); 表示输出“hello,world~”
//6. ;表示语句结束
public class Hello {
//编写一个main方法
public static void main(String[] args) {
System.out.println("hello,world~");
}
}
-
编译:
javac Hello.java
- 有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件
- 在该源文件目录下,通过javac编译工具对Hello.java文件进行编译
- 如果程序没有错误,没有任何提示,但在当前目录下会出现一个Hello.class文件,该文件称为字节码文件,也是可以执行的java的程序。
-
运行
- 有了可执行的java程序(Hello.class字节码文件)
- 通过运行工具java.exe对字节码文件进行执行,本质就是.class装载到JVM机执行
JDK
-
JDK基本介绍
-
JDK全称:Java Development Kit Java开发工具包
JDK = JRE + Java的开发工具[java,javac,javadoc,javap等]
-
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。
-
-
JRE基本介绍
-
JRE全程:Java Runtime Environment Java运行环境
JRE = JVM + Java的核心类库[类]
-
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
-
-
JDK、JRE和JVM的包含关系
- JDK = JRE +开发工具集(例如javac,java编译工具等)
- JRE = JVM + Java SE标准类库(java核心类库)
- 如果只想运行开发好的.class文件,只需要JRE
转义字符
常用转义字符 | 功能 |
---|---|
\t | 一个制表位,实现对齐的功能 |
\n | 换行符 |
\\ | 一个\ |
" | 一个" |
' | 一个‘ |
\r | 一个回车,光标移至最前 |
public class ChangeChar{
public static void main(String[] args){
System.out.println("北京\t天津\t上海");
System.out.println("jack\nsmith\nmary");
System.out.println("D:\\Programming\\JavaProjects");
System.out.println("老韩说:\"要好好学习java,有前途\"");
System.out.println("老韩说:\'要好好学习java,有前途\'");
System.out.println("韩顺平教育\r北京");
}
}
-
练习1.1:
使用一句输出语句,达到输出如下图形的效果
public class ChangeChar{ public static void main(String[] args){ System.out.println("书名 \t作者 \t价格 \t销量 \r\n三国 \t罗贯中 \t120 \t1000"); } }
Java开发规范
-
java程序开发注意事项和细节说明
-
对修改后的Hello.java源文件需要重新编译,生成新的class文件后,再进行执行,才能生效
-
Java源文件以.java为扩展名。源文件的基本组成部分时类(class),如本类中的Hello类。
-
Java应用程序的执行入口时main()方法。它有固定的书写格式:
public static void main(String[] args)
-
Java语言严格区分大小写。
-
Java方法由一条条语句构成,每个语句以“;”结束。
-
大括号都是成对出现的,缺一不可。[习惯,先写{}再写代码]
-
一个源文件中最多只能有一个public类。其他类的个数不限。
public class Hello{ } class Dog{ } class Tiger{ }
编译后,每一个类,都对应一个.class文件
-
如果源文件包含一个public类,则文件名必须按该类名命名!
-
一个源文件中最多只能有一个public类。其他类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法。
public class Hello{ public static void main(String[] args){ System.out.println("hello,world~"); } } class Dog{ public static void main(String[] args){ System.out.println("hello,小狗狗~"); } } class Tiger{ public static void main(String[] args){ System.out.println("hello,小老虎~"); } }
-
-
初学Java易犯错误
- 找不到文件:源文件名不存在或者写错,或者当前路径错误。
- 主类名和文件名不一致:声明为public的主类与文件名一致,否则编译失败。
- 缺少分号:编译失败,注意错误出现的行数,再到源代码中找到指定位置改错。
-
Java代码规范
- 类、方法的注释,要以javadoc的方式来写。
- 非javadoc的注释,往往是给代码的维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等。
- 使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移。
- 运算符和 = 两边习惯性各加一个空格。比如:2 + 4 * 5 + 345 - 89
- 源文件使用utf-8编码。
- 行宽度不要超过80字符。
- 代码编写次行风格和行尾风格。
注释(comment)
-
介绍
用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性);注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去实现。
public class Comment{ //编写一个main方法 public static void main(String[] args){ //示意 => 可读性很好 //下面代码完成 两个数相加 //定义变量 int n1 = 10; int n2 = 30; //求和 int sum = n1 + n2; //输出结果 System.out.println("结果=" + sum); } }
-
Java中的注释类型
-
单行注释
格式://注释文字
-
多行注释
格式:/* 注释文字 */
-
文档注释
注释内容可以被JDM提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类
/** * @author 小明 * @version 1.0 */ public class TestComment{ public static void main(String[] args){ } }
javadoc -d d:\\temp -author -version TextComment.java
标签 描述 标签类型 @author 作者标识 包、 类、接口 @deprecated 标识当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API 包、类、接口、值域、构造函数、 方法 @docRoot 指明当前文档根目录的路径 @exception 标志一个类抛出的异常 构造函数、 方法 @inheritDoc 从直接父类继承的注释 @link 链接到某个特定的成员对应的文档中 包、类、接口、值域、构造函数、 方法 @linkplain 插入一个到另一个主题的链接,但是该链接显示纯文本字体 包、类、接口、值域、构造函数、 方法 @param 方法的入参名及描述信息,如入参有特别要求,可在此注释 构造函数、方法 @return 对函数返回值的注释 方法 @see 引用,查看相关内容,如类、方法、变量等 包、类、接口、值域、构造函数、 方法 @serial 说明一个序列化属性 @serialData 说明通过writeObject( ) 和 writeExternal( )方法写的数据 @serialField 说明一个ObjectStreamField组件 @ @since 描述文本,API在什么程序的什么版本后开发支持 包、类、接口、值域、构造函数、 方法 @throws 构造函数或方法所会抛出的异常 构造函数、 方法 @value 显示常量的值,该常量必须是static属性 静态值域 @version 版本号 包、 类、接口
使用细节:
- 被注释的文字,不会被JVM(Java虚拟机)解释执行。
- 多行注释里面不允许有多行注释嵌套。
-
Java API
-
API(Application Programming Interface,应用程序编程接口)是Java提供的基本编程接口(Java提供的类还有相关的方法)。中文在线文档:https//www.matools.com
-
Java语言提供了大量的基础类,因此Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
-
Java类的组织形式
graph LR A(JDK8,11)-->B1(包1) A(JDK8,11)-->B2(包2) A(JDK8,11)-->B3(包...) B1-->C1(接口) B1-->C2(类) B1-->C3(异常) C2-->D1(字段...) C2-->D2(构造器 构造方法) C2-->D3(成员方法 方法)