学习目标:
一周掌握 Java 基础知识
学习内容:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句
5 , 数组的定义和访问
学习时间:
1、 周一至周五晚上 7 点—晚上10点
学习产出:
java的预备知识
-
Java 语言是简单的:
Java 语言的语法与 C 语言和 C++ 语言很接近 -
Java 语言是面向对象的:
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之 间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 -
Java语言是分布式的:
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。 -
Java 语言是健壮的:
Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。 -
Java语言是安全的:
Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。 -
Java 语言是体系结构中立的:
Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
-
Java 语言是可移植的:
这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
-
Java 语言是解释型的:
如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
-
Java 是高性能的:
与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。 -
Java 语言是多线程的:
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
-
Java 语言是动态的:
Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们
所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
一 术语
- JDK(Java Development Kit ):编写Java程序的程序员使用的软件
- JRE(Java RuntimeEnvironment):运行Java程序的用户使用的软件
- Server JRE (Java SE RuntimeEnvironment):服务端使用的 Java 运行环境
- SDK(Software Development
Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的 - JDK DAO(Data AccessObject):数据访问接口,数据访问,顾名思义就是与数据库打交道
- MVC(Model View
Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用
二 jdk ,jde
JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。
JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具。
java开发过程
我们在idea中编写一下代码,主要文件名必须和类名一致
HelloWorld .java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
main方法:称为主方法。写法是固定格式不可以更改。main方法是程序的入口点或起始点,无论我们编写多 少程序,JVM在运行的时候,都会从main方法这里开始执行。
接着我们使用 javac编译成jvm 可执行的字节码文件
当然了,我们也可以直接运行
编译和运行是两回事 编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们 所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。 运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
三 变量和常量
常量
指,不可变是数据,存放在静态资源区(常量区)
public static void main(String[] args){
System.out.println(123); //整数
System.out.println(0.125); //浮点数
System.out.println('A'); //字符
System.out.println(true); //布尔值
System.out.println("Java"); //字符串常量
}
变量
开发者创建的数据,一般存储在栈中
public static void main(String[] args){
byte b =100; //定义字节变量
System.out.println(b);
short s = 100; //短整数
System.out.println(s);
int i = 1234;
System.out.println(i);
long l = 123412314L;
System.out.println(l);
float f = 1.2f;
System.out.println(f);
double d = 4.4;
double d1 = 1.3f;
System.out.println(d);
System.out.println(d1);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
}
四 数据类型
Java的数据类型分为两大类: 基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 。 引用数据类型:包括 类 、 数组 、 接口 。
以下为基本数据类型
自动转化
自动转换:将 取值范围小的类型 自动提升为 取值范围大的类型
int i = 1;
byte b = 2;
int c = i + b;
System.out.println(c);
运算结果,变量c的类型将是 int 类型
这里int是4个字节, b是一个字节, 转后的c也必须是4个字节
转换规则: byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
强制转换
不允许类型宽变窄
int i = 1.5; // error
int i = (float)1.5; // double类型数据强制转成int类型,直接去掉小数点。
五 运算符
一些常用的运算符
++ 运算,变量自己增长1。反之, – 运算,变量自己减少1,用法与 ++ 一致。
++ 运算符和 += 运算符效果一致,有可能会出现内存地址不同的情况
变量 前++ :例如 ++i 。 变量 后++ :例如 i++ 。
遇到字符是拼接
System.out.println("5+5="+ 5 + 5);//输出5+5=55
后面会提到基本类型转字符串
三元运算符(三元表达式)
格式: 数据类型 变量名 = 布尔类型表达式?结果1:结果2
int i = (1==2 ? 100 : 200);
System.out.println(i);//200
六 函数(方法)
格式: 修饰符 返回值类型 方法名 (参数列表){ 代码… return ; }
public void methodName() {
System.out.println("这是一个方法");
}
我们所定义的main方法就是一个静态方法静态方法不能直接调用成员方法, 可以在成员方法前面 static修饰符 public static void methodName() {};
方法定义注意事项:
- 方法必须定义在一类中方法外
- 方法不能定义在另一个方法的里面
七 JShell脚本工具
JShell脚本工具是JDK9的新特性,可以帮助我们遇到一些小问题时,使用较少代码调试
使用方法, 在dos 中输入 jshell
八 流程控制
if
if语句第一种格式:
if(关系表达式){ 语句体; }
- if 执行流程首先判断关系表达式看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体
int a = 10; int b = 20; //变量使用if判断
if (a == b){
System.out.println("a等于b");
}
// 结果为空,判断为false
if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
if…else 执行流程首先判断关系表达式看其结果是true还是false 如果是true就执行语句体1 如果是false就执行语句体2
int a = 10; int b = 20; //变量使用if判断
if (a == b){
System.out.println("a等于b");
} else{
System.out.println("a不等于b");
}
// a不等于b
if语句第三种格式:
if…else if …else 执行流程首先判断关系表达式1看其结果是true还是false 如果是true就执行语句体1 如果是false就继续判断关系表达式2看其结果是true还是false 如果是true就执行语句体2 如果是false就继续判断关系表达式…看其结果是true还是false …如果没有任何关系表达式为true,就执行语句体n+1。
int a = 10;
int b = 20;
if(a>=b){
System.out.println("a>=b");
}else if (a==10){
System.out.println("a=10);
}else {
System.out.println(a);
// a=10
注意,所有格式中无论有几个条件(else),其结果都只会运行一次,如果存在多个符合条件的,则优先执行最近的一个else
switch
switch(表达式) {
case 常量值1: 语句体1; break;
case 常量值2: 语句体2; break;
... default: 语句体n+1; break;
}
执行流程首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉
int a = 10;
switch(a){
case 10:
System.out.println("a大于10");
case 10:
System.out.println("a等于1");
break;
case 100:
System.out.println("a小与100");
}
//a大于10
//a等于1
case的穿透性,如果一个case中没有break结束循环条件,将会继续忘下执行,直到遇到了一个break,或者结束语句
for
for(初始化表达式①; 布尔表达式②; 步进表达式④){ 循环体③ }
执行流程执行顺序:①②③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化 ②负责判断是否满足循环条件,不满足则跳出循环 ③具体执行的语句 ④循环后,循环条件所涉及变量的变化情况
for(int x = 0; x < 10; x++) {
System.out.println("HelloWorld"+x);
}
// HelloWorld1
//HelloWorld2
//.......
//HelloWorld9
while
执行流程执行顺序:①②③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化。 ②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句。 ④循环后,循环变量的变化情况
初始化表达式①
while(布尔表达式②){ 循环体③ 步进表达式④ }
int i = 1; //循环条件<=10
while(i<=10){
System.out.println("HelloWorld");
//步进
i++;
}
do…while
初始化表达式①
do{
循环体③ 步进表达式④
}while(布尔表达式②);
do…while循环格式 执行流程执行顺序:①③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化。 ②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句 ④循环后,循环变量的变化情况
int x=1; do {
System.out.println("HelloWorld");
x++; }
while(x<=10);
do…while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。
break
使用场景:终止switch或者循环
continue
使用场景:结束本次循环,继续下一次的循环
嵌套循环
for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
嵌套循环执行流程: 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥ 外循环一次,内循环多次。 比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。