第一章Java概述
1.计算机语言
机器语言>汇编语言>高级语言
- 汇编语言与机器语言一一对应,每一条机器指令都有与之对应的汇编指令
- 汇编语言可以通过编译得到机器语言,机器语言可以通过反汇编得到汇编语言
- 高级语言可以通过编译得到汇编语言\机器语言,但汇编语言\机器语言几乎不可能还原成高级语言
2.Java语言概述
1.发展历史
java诞生于sun,09年sun被Orscle(甲骨文)收购。
java之父是詹姆斯.高斯林
Java大约26岁,我们是使用的版本是Java8,最新版本Java19,最新的长期支持版是Java17.
2009.04.20被收购
2.Java特点(了解)
(1)优点
- 面向对象、简单熟悉: Java语言支持封装、继承、多态,面向对象编程,让程序更好达到
高内聚,低耦合的标准。Java编程语言设计时保留了C++的许多面向对象特性,从而使它成为一种熟悉的语言。 - 健壮型: Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
- 安全性高: Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。
- 跨平台、可移植: Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
- 支持分布式、多线程、动态性: Java语言支持编写网络应用程序,支持编程多线程程序,支持反射等动态机制。
(2)缺点
- 语法过于复杂,严谨,对程序员的约束比较多,与python和PHP等相比入门相对较难。
- 一般适用于大型网站开发,整个架构比较重。
3.java技术体系平台(了解)
- JavaSE(Java Platform, Standard Edition标准版):允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
- JavaEE(Java Platform, Enterprise Edition企业版):是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。
- JavaME(Java Platform, Micro Edition 小型版):为互联网上的嵌入式和移动设备上运行的应用提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(PDA)、电视机顶盒、打印机等等。JavaME包括灵活的用户界面、健壮的安全性、内置的网络协议,以及支持动态下载的网络和离线应用程序。基于JavaME的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。
3java跨平台原理
1.java语言跨平台原理
2.JVM JRE JDK 的关系
- JVM:Java虚拟机,是运行所有java程序的假象计算机,是Java程序的运行环境之一,也是java最吸引力的特征之一。我们编写的java代码,都是运行在JVM之上。
- JRE (Java Runtime Environment) :是Java程序的运行时环境,包含
JVM和运行时所需要的核心类库。 - JDK (Java Development's Kit):是Java程序开发工具包,包含
JRE和开发人员使用的工具。
JDK=JRE+开发工具栏
JRE=JVM+Java SE标记标准类
4开发环境搭建(掌握)
1. 下载JDK
- 进入Oracle官网
官网网址:www.oracle.com,JDK下载地址:www.oracle.com/java/techno…
- 找到java点击进入
- 在上面找到Download点击进入
- 找到Java archive点击进入
- 找到对应的版本及系统点击下载
2 . JDK的安装
- 找到安装包点击进入
- 点击下一步(安装路径建议安装在系统盘之外,安装路径内不允许有中文和空格)
- 点击下一步到安装结束
3 .配置环境变量
为什么配置path?
希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。
- 桌面找到此电脑,点击鼠标右键,点击属性
- 找到高级系统设置,点击进入
- 找到 高级->环境变量 点击进入
- 点击新建一个名为JAVA_HOME的变量
- 找到你安装的JDK的根目录,如:D:\develop_tools\Java\jdk1.8.0_202
- 复制根目录并且给JAVA_HOME的值粘贴进去
- 找到path点击编辑
- 添加一个新的值(如果是列表形式则点击添加按钮,如果是一串字符的话,在最前方添加)
- 输入%JAVA_HOME%/bin(这里bin前面写不写/取决于你在JAVA_HOME内最后有没有写/)
- 输入后点击确定应用结束
- 在修改完成后需要关闭cmd重启,重启后输入javac测试是否调试成功
5 入门程序HelloWorld(掌握)
1 HelloWorld案例
1、程序开发步骤说明
JDK安装完毕,可以开发我们第一个Java程序了。
Java程序开发三步骤:编写、编译、运行。
2.编写Java源程序保存.java源文件
- 在
D:\atguigu\javaee\JavaSE20190624\code\day01_code目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为==.java==。 - 在文件中输入如下代码,并且保存:
public class HelloWorld{
public static void main (String[] args){
System.out.println("hello java");
}
}
第一个HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件 编译成JVM可以看懂的字节码文件 ,也就是==.class==文件。
3、编译Java源文件生成.class字节码文件
在DOS命令行中,进入D:\atguigu\javaee\JavaSE0308\code\day0309_01day目录,使用javac命令进行编译。
命令:
javac Java源文件名.后缀名
举例:
javac HelloWorld.java
4、第一个Java程序
Java程序的开发步骤:
1、编写Java代码
注意:
(1)文件必须以.java结尾,该文件称为Java的源文件,即Java的源代码文件
(2)Java代码的结构必须是
类{
主方法{
语句;
}
}
因为Java是面向对象的编程语言,所有代码必须在类中。
主方法的格式是固定的:public static void main(String[] args){}
主方法的作用:Java程序的入口,没有它,就无法运行了
2、编译Java代码
目的:JVM只认识字节码,不认识Java代码
所以必须把Java代码“编译/翻译”为字节码数据
工具:javac.exe c=compile
格式:
javac Java源文件.java
编译结果:得到1个或多个的xx.class文件,每一个Java类(class)都会有一个对应的xx.class字节码文件
3、运行Java程序
目的:让JVM解释执行字节码数据
工具:java.exe
格式:
java Java的主类名
Java的主类:包含main方法的类
例如:
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello java");
}
}
其中的HelloWorld就是主类名。
4、问题
(1)中文乱码处理问题
javac -encoding UTF-8 源文件名.java
(2)文件名和类名一致的问题
如果class前面加了public,就要求class后面的类名与源文件名(即xx.java)完全一致,包括大小写。
例如:
public class Hello{
public static void main(String[] args){
}
}
必须在Hello.java文件中,否则编译不通过。
如果class前面没有加public,类名和源文件名可以不相同,此时编译和运行时,要注意:
编译:javac Java源文件.java
运行:java 主类名
实际开发中,无论class是否是public,都会和源文件名一致,这样做的好处是便于维护。
(3)大小写问题:Java是严格区分大小写
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello java");
}
}
第2章 Java基础语法
2.1 注释(comment)(掌握)
/*
注释:解释,对代码的解释,给阅读代码的人看的
Java的注释有3种:
(1)单行注释:以两个/开头,到该行行尾
(2)多行注释:以一个/和一个*开头,/和*中间不能包含空格,
中间的注释内容可以跨越多行,直到遇到第一个*和第一个/为止,
警惕多行注释出现嵌套情况
(3)文档注释:比较专业,结合javadoc.exe工具使用的,
用来生成专业的API文档用的
以一个/和两个*开头,/和*中间不能包含空格,
中间的注释内容可以跨越多行,直到遇到第一个*和第一个/为止
第3种文档注释,今天先了解有这种注释,后期我们再用。
*/
public class CommentDemo{
// 单行注释
// 这是一个主方法
public static void main(String[] args){
System.out.println("演示注释"); //这是一个输出语句
}
}
/**
* 演示文档注释
* @version 1.8
* @author Irene
* */
public class DocumentDemo{
/**
* 这是主方法,Java程序的入口
* @param args String[] 这是主方法的参数
* */
public static void main(String[] args){
}
/**
* 这是一个求两个整数的商的方法
* @param a int 被除数
* @param b int 除数
* @return a/b int 得到a除以b的商
* @exception ArithmeticException 算术异常,当b为0的时候
* */
public static int divide(int a, int b){
return a/b;
}
}
使用文档注释生成API文档:
javadoc -encoding UTF-8 -d ./doc 源计划.java
2.2 Java关键字
/*
Java的关键字(目前先学到Java8版本)
(1)共50个单词,全部都是小写的。
(2)关键字:有特殊意义的单词,一般表示数据类型、语法等
(3)这50个关键字中有2个保留字:const和goto
部分关键字后面再学:assert、volatile、strictfp
用23天的时间陆续学习45个单词。
(4)在代码中关键字通常会有特殊的颜色标识
(5)3个特殊值,不属于关键字,经常会被混到关键字中:
true,false,null
*/
public class KeyWordDome{
public static void main(String[] args){
System.out.println(true); // 输出boolean值
System.out.println(false);
boolean b = true; // 值,给变量赋值
System.out.print(b);
String str = null;
System.out.println(str); // 输出空值
}
}
2.3 标识符
/*
Java中的标识符:
什么是标识符?
凡是在写代码过程中,需要程序员自己“命名”的部分都是标识符,
例如:类名(class后面的类名)、变量名等。
标识符的命名必须严格遵守规则:(如果不遵守,会出现编译或运行错误)
(1)只能使用26个英文字母(大小写)、数字0-9、下划线(_)、美元符号($)
(2)严格区分大小写
(3)数字不能开头
(4)一个标识符中间不能包含空格
(5)不能直接使用关键字、保留字、特殊值作为标识符
标识符的命名规范,建议遵守:(如果不遵守,会被鄙视)
(1)见名知意
(2)类名等:遵守大驼峰命名法,每一个单词首字母都大写,
形式:XxxYyyZzz
例如:HelloWorld
(3)变量名、方法名等:
遵守小驼峰命名法,从第二个单词开始首字母都大写,
形式:xxxYyyZzz
例如:main,maxValue
(4)常量名:
所有字母都大写,多个单词之间使用下划线分割
形式:XXX_YYY_ZZZ
例如:PI,MAX_VALUE
(5)包名:(文件夹名)
所有单词都小写,多个单词之间使用.分割
形式:xxx.yyy.zzz
例如:java.lang包,java.io包等
自己写的代码,包名不要以java开头
*/
public class IdentifyDemo{
}
2.4 Java的数据类型
/*
Java的数据类型:
(1)8种基本数据类型:
byte,short,int,long,float,double,char,boolean
(2)引用数据类型:
A:类(class):String、System
B:接口(interface)
C:枚举(enum)
D:注解(@interface)
E:数组([])
F:记录类(record)
*/
public class DataTypeDemo{
public static void main(String[] args){
}
}
2.5 Java的字面常量
/*
Java中的常量:
(1)字面常量:在代码中直接写的数据值,就是字面常量
例如:"hello"字符串常量
15通常代表int常量
1.5通常代表double常量
(2)声明常量(一会讲完再说)
每一种数据类型的常量值如何表示?
byte,short,int:正常表示
long:通常需要在数字后面加L或l(小写L),推荐使用大写L
当数字超过int范围,必须加L
当数字超过long范围,加L也没用,必须用后面学的BigInteger等类型
float:通常需要在数字后面加F或f
double:正常表示,但有的时候加D或d
char:必须加单引号'',单引号中有且只有1个字符
boolean:正常表示,只能是两个值之一,true或false
String:要求必须加双引号"",在双引号中可以有0~n个字符
*/
public class LiteralValue{
public static void main(String[] args){
System.out.println(15);//默认它是int类型
System.out.println((byte)15);//明确说15是byte类型
System.out.println(1585477895475148511L);
System.out.println(15.0);//默认它是double类型
System.out.println(15.0F);//明确说15.0是float类型
System.out.println('女');//char类型
System.out.println("美女");//String类型
System.out.println(true);//boolean类型
}
}
2.7 变量练习题1
- 定义类 Homework4
- 定义 main方法
- 使用final定义变量,用来表示圆周率并赋值为3.14
- 再使用3个变量分别保存圆的半径,分别赋值为1.2、2.5、6
- 使用计算表达式求它们的面积,并输出显示半径和面积值。
public class Homework4 {
public static void main(String[] args) {
final double PI = 3.14;
double radius1 = 1.2;
double radius2 = 2.5;
double radius3 = 6;
System.out.println("第一个圆的面积为" + PI * radius1 * radius1 + "," + "第一个元的半径是" + radius1);
System.out.println("第一个圆的面积为" + PI * radius2 * radius2 + "," + "第一个元的半径是" + radius2);
System.out.println("第一个圆的面积为" + PI * radius3 * radius3 + "," + "第一个元的半径是" + radius3);
}
}
2.8 变量练习题2
- 定义类 Homework3
- 定义 main方法
- 定义合适类型的变量用于存储自己的姓名、年龄、性别、体重、婚姻状况(已婚用true表示,单身用false表示)等等,然后打印输出这些变量的值
public class Homework3 {
public static void main(String[] args) {
String name="java";
int age = 22;
char sex = '男';
double weight = 65.55;
boolean single =false;
String marry = single ==false ? "我今年单身":"我结婚了";
System.out.println("我的名字叫" + name + "," + "今年" + age+ "了," +
"性别" + sex + "," + "体重是" + weight + "," + marry );
}
}
2.9 最终变量/声明常量
/*
Java的常量:
(1)字面常量值
(2)声明的常量,也称为最终变量,最终常量
final 数据类型 常量名 = 常量值;
常量名:所有单词字母都大写,多个单词之间可以使用下划线分割
例如:在整个程序运行期间,圆周率都是固定不变的
圆周率:3.14
后期用户需求变化:
圆周率:3.1415926
*/
public class FinalVariable{
public static void main(String[] args){
//声明3个半径值,分别求圆的面积、周长
double r1 = 1.2;
double r2 = 2.5;
double r3 = 2.3;
final double PI = 3.1415926;//比字面常量值,便于维护
//PI = 6.28;//不能重新赋值
double a1 = PI * r1 * r1;
double p1 = 2 * PI * r1;
double a2 = PI * r2 * r2;
double p2 = 2 * PI * r2;
double a3 = PI * r3 * r3;
double p3 = 2 * PI * r3;
System.out.println("r1 = " + r1 +",a1 = " + a1 + ",p1 = " + p1);
System.out.println("r2 = " + r2 +",a2 = " + a2 + ",p2 = " + p2);
System.out.println("r3 = " + r3 +",a3 = " + a3 + ",p3 = " + p3);
}
}