期末复习总结

基础知识

JVM
在⼀个Java平台下,在底层运⾏的是Java Hotspot虚拟机,即JVM。JVM(Java Virtual Machine)是 Java 程序执⾏基础环境。JVM 针对不同的软硬件应⽤平台进 ⾏设计,同⼀个 Java 程序通常不依赖操作系统,可以在不同的 JVM 中执⾏。JVM是JRE的⼀部分。

JDK
Java 开发⼯具 SDK(Software Development Kit)是 Java 开发应⽤的核⼼。

JRE
JRE(Java Runtime Environment)是Java运⾏环境。

API
Java应⽤程序编程口,即Java官⽅或者是第三⽅⼚商提供的代码。Java API通常需要使⽤import关键
字进⾏导⼊,并且还需要保证这些API存在于⾃定义代码可访问的地⽅。

Java源代码.java⽂件都需要编译成.class⽂件,然后在对应版本的JVM中执⾏

完整步骤包括:

  1. 通过⽂本编辑⼯具创建扩展名为.java 的源代码⽂件。
  2. 使⽤编译⼯具(如 JDK 中的 javac)将.java ⽂件编译成.class 字节码⽂件。
  3. 使⽤装载⼯具(如 JDK 中的 java)装载.class ⽂件⾄ Java 运⾏环境 JRE 中运⾏。
  4. 注意:控制台程序通常不知道javac和java所在的位置,由此带来⼀个潜在的问题,在不同操作系统OS之下(主要是MS Windows)设置环境变量的问题。
//1
import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		// 2
		String name = new Scanner(System.in).nextLine();
		int age = new Scanner(System.in).nextInt();
		// 3
		System.out.println("My name is " + name + ". I'm " + age + " years old.");
	}
}

注意
类结构是Java语法中⽤于描述特定对象类型的语法结构。对于java程序来说,所有的代码必
须放置在类结构中,不论类结构是否真的发挥了作⽤。

输入语句

new java.util.Scanner(System.in).nextInt(10);  //获取一个整型10
new java.util.Scanner(System.in).nextLine();   //获取⼀⾏字符串

java语言基础

数据类型

  1. 原始数据类型(常规数据类型)包括int、char、float、double、boolean
  2. 引用数据类型 数组、集合、对象、类等这些概念都和参考数据有关

基本语言单位

标识符:标识符是源代码中的基本字符串表⽰。

Keyword
关键字是具有特殊功能的标识符

常量

final关键字可以⽤于定义不可变常数,final表⽰不可改变

变量

变量是有名字的存储空间,可以存储⼀些计算⽤的中间值。变量可以参与具体运
算,但必须先声明后使⽤。

尽管Java编译器在某些时候类似C会给a⼀个默认值0,但并不保证总是这样

表达式
表达式是数据与运算符的结合体。

语句
表达式加上 ; 可以成为语句。

方法

public class TheMethod {
	// 1
	public static void m1() {
		System.out.println("a");
		System.out.println("b");
	}
	// 2
	public static void m2(int p) {
		int tmp = 3 + p;
		System.out.println(tmp);
	}
	// 3
	public static int m3() {
		int a = 2;
		return a + 3;
	}
	// 4
	public static int m4(int p) {
		return p + 3;
	}
	// 5
	public static int m5(int p, int k) {
		return p + k;
	}
	public static void main(String[] args) {
		// 6
		TheMethod.m1();
		TheMethod.m2(1);
		// 7
		int x = TheMethod.m3();
		int y = TheMethod.m4(4);
		// 8
		int z = TheMethod.m5(x, y);
		// 9
		int mm = TheMethod.m5(TheMethod.m3(), z);
	}
}
代码说明:
1. 声明⼀个⽆参数⽆返回值类⽅法m1
2. 声明⼀个有参数⽆返回值类⽅法m2
3. 声明⼀个⽆参数有返回值类⽅法m3
4. 声明⼀个有参数有返回值类⽅法m4
5. 声明⼀个带有多参数的类⽅法m5
6. 通过类名调⽤类⽅法m1和m2,将直接执⾏m1和m2⽅法体部分的内容
7. 通过类名调⽤类⽅法m3和m4。因为m3和m4都是有返回值的,所以这两者计算结束后,
在其调⽤处,将会留下计算结果。可以将计算结果5和7分别存⼊x和y。
8. 利⽤前⼀步获得的变量x和y,调⽤m5,计算结果为12,被存⼊到z。
9. 嵌套使⽤类⽅法。⾸先计算TheMethod.m3()得到5,所以
 TheMethod.m5(TheMethod.m3(), z)
 等价于
 TheMethod.m5(5, 12)
 最后求得17,存⼊mm。

if-else if-else
判断语句
while do-while
while是⼀种循环结构,即其包含的执⾏内容将依据while关键字之后的布尔值条件反
复执⾏。

for 循环
与for关键字有关的循环结构在Java中有2种,常被分别叫做for和for…each(或称
for…in)结构。⾸先在循环开始之前,声明了⼀个int类型变量x并初始化为0。
for-each

for…each(或称for…in结构)主要⽤于遍历某种集合性数据。例如,同样遍历数组
anArray,可以表达为:

for (int tmp : anArray) {
System.out.println(tmp);
}

break
break关键字可以放置在switch、while、do…while、for、for…each中,终⽌整个结构
的执⾏。break的作⽤范围在⼀个包含它的switch、while、for等结构的⼤括号
之内,同时不受if结构的⼤括号影响。

continue
continue关键字的作⽤是在while等循环结构中跳出当前这⼀轮循环,直接进⼊下⼀
轮。continue的作⽤可以被视为是忽略循环结构的部分代码。

数组

数组适合存放和处理存在内在的逻辑关系的数据,特别是有序数据。
定义方式

int [] z = new int[3];

排序算法(冒泡)

public static void main(String[] args) {
	double[] scores = { 61.0, 68.6, 78.1, 94.2, 58.5,87.8, 67.5, 91.2, 95.1, 70.0 };
	// 1
	for (int i = 0; i < scores.length - 1; i++) {
	// 2
	for (int k = i + 1; k < scores.length; k++) {
	// 3
	if (scores[i] > scores[k]) {
		double tmp = scores[i];
		scores[i] = scores[k];
		scores[k] = tmp;
			}
		}
	}
	// 4
	for (double tmp : scores) {
		System.out.print(tmp + " ");
	}
}
结果:58.5 61.0 67.5 68.6 70.0 78.1 87.8 91.2 94.2 95.1

对象数组

Student[] students = new Student[50];

题目(九九乘法表)

public class MultiplicationTable {
	public static void main(String[] args) {
		for (int m = 1; m <= 9; m++) {
			for (int n = m; n <= 9; n++) {
			System.out.print(m + "*" + n + "=" + m * n + "\t");
			}
			System.out.print("\n");
			}
		}
	}
结果
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81

面向对象编程

对象

Java对象Object,是软件数据集合,也称软件簇。它通常包含⼀个数据对象的属性field和⽅法method。对于属性field,在代码中表⽰为类中的变量,其作⽤是表⽰⼀个对象的状态。

是对Object的基本分组

接口

接口interface是⼀个标准或者协议,如果⼀类对象实现⼀个interface,即表⽰该类对象具有这⼀interface所声明的所有能⼒。接口也可以被理解为多个类之间的沟通协议。

其作⽤是组织和封装Java代码。package通常包含多类、接口、其它资源⽂件等内容。

类的声明

它通常包含关键字class,⾃定义类的名字MyClassName,以及类的边界“{”和“}”。类⼀般组成部分包括属性(field)、⽅法(method)和构造⽅法(constructor)。field通过定义变量来表⽰,method通过函数表⽰。constructor是⼀类特殊的函数,在通过创建对象时使⽤
主⽅法不属于类的描述。

方法

⽅法是类中声明的函数。

重载

Java语⾔⽀持⽅法重载overloading,即⼀个类中的⼀组⽅法有相同的名字和⼀组不同的参数列表,重载⽅法的区别通过“⽅法签名”来区别。

构造方法

构造⽅法Constructor,是⼀个类的成员,是⼀类特殊的⽅法,其⾸要作⽤是对新实例化对象的属性进⾏初始化。

特点
  1. 它属于类的范围。
  2. ⽅法名必须和所属类的名字相同。
  3. ⽆返回值类型声明。
  4. 其它部分和普通⽅法相同。
class Student {
	Student() {
	}
}

使用
··· java
Student tom = new Student();
···
当⼀个Java类没有任何⾃定义构造⽅法时,Java编译系统将⾃动添加⼀个⽆参数、⽆执⾏内容的构造⽅法,

类变量和类⽅法的声明

带有static关键字

访问控制

public、private

继承(带有extends)

super引用父类,this引用子类

重写问题

Override是在继承关系中,出于⼦类⾃定义需要,⼦类可以重写在⽗类中已经声明的⽅法,⽅法签名必须相同,但⽅法内容可以根据需要进⾏改变。

class Animal {
		public void move() {
			System.out.println("Animal move");
		}
}
class Human extends Animal {
public void move() {
	System.out.println("Human walk");
	// do walk action
	}
}
class Bird extends Animal {
	public void move() {
		System.out.println("Bird fly");
		// do fly action
	}
}

final

final关键字可将类定义为不可继承的,也叫做最终类,防⽌代码在分发之后被变更功能。

接口不可以被实例化,但是可以继承

类可以嵌套 ,enum 为枚举类型

异常处理

Java语⾔将⽆法通过代码控制,程序出错后⽆法恢复的错误统称为Error,将可控的⼀些问题归为Exception(异常)。

Exception(异常)

所有的异常类都是Exception类的直接或间接继承者。
** 通过try…catch语句块可以在局部范围直接处理基本异常。通过throws关键字可以传递异常对象⾄App的其它部分,由其它代码实现集中的异常管理。**

try…catch…finally

try…catch…finally由1个try⼦句、1个或多个catch⼦句以及0个或1个finally⼦句组成。
**finally内的结果不管程序运行结果都会最后被执行。 **
例子

import java.io.*;
public class ExceptionTest {
	public static void main(String[] args) {
	// 1
		FileReader in = null;
		try {
			// 2
			in = new FileReader("in.txt");
			// 3
			int c = in.read();
			System.out.println(c);
		} catch (FileNotFoundException e) { // 4
			System.out.println("Exception: File Not Found");
		} catch (IOException e) { // 5
			System.out.println("Exception: IO Exception");
		} catch (Exception e) { // 6
			System.out.println("Exception: Just An Exception");
		} finally { // 7
			System.out.println("Start closing sequences.");
		// do close operation
		}
	}
}

星星图形排序的代码

//左正三角形
public class sanjiaoxing1{
	public static void main(String[] args){
     	String s = "*"; //输出为三角形的字符串为*
        for(int j=0;j<5;j++){ //输出第一行
            for(int i=0;i<j+1;i++){   //不换行,输出一行 i<j+1 等价于 i<=j
                System.out.print(s);
            }
            System.out.println(); //换一个新行
        }
    }
}

//左倒三角形
public class sanjiaoxing2{
	public static void main(String[] args){
		String s = "*";
		for(int j=5;j>0;j--){
            for(int i=0;i<j;i++){
                System.out.print(s);
            }
            System.out.println();
        	}
		}
	} 
}


//右正三角形
public class sanjiaoxing3{
	public static void main(String[] args){
		String s = "*";
        for(int j=0;j<5;j++){
            for(int i=0;i<4-j;i++){
                System.out.print(" "); //输出形状为左倒三角形的空格,此三角形共四行,第一行为四个空格
            }
            for(int i=0;i<j+1;i++){
                System.out.print(s);
            }
            System.out.println();
        }
	}
}


//右倒三角形
public class sanjiaoxing4{
	public static void main(String[] args){
        String s ="*";
        for(int j=0;j<5;j++){
            for(int i=0;i<j;i++){
                System.out.print(" "); //输出形状为左正三角形的空格,第一行位于星号三角形的第二行之前
            }
            for(int i=0;i<5-j;i++){
                System.out.print(s);
            }
            System.out.println();
        }
    }
}
//正中三角形
public class sanjiaoxing5{
	public static void main(String[] args){
		String s ="*";
		for(int j =0;j<5;j++){
            for(int i=0;i<4-j;i++){
                System.out.print(" ");
            }
            for(int i=0;i<2*j+1;i++){ //2*j+1:将0,1,2,3,4分别转换为1,3,5,7,9
                System.out.print(s);
            }
            System.out.println();
        }
	}
}
//倒中三角形
 public class sanjiaoxing6{
 	public static void main(String[] args){
        String s ="*";
        for(int j=0;j<5;j++){
            for(int i=0;i<j;i++){
                System.out.print(" ");
            }
            for(int i=0;i<9-2*j;i++){ //9-2*j:将0,1,2,3,4分别转换为9,7,5,3,1
                System.out.print(s);
            }
            System.out.println();
        }
    }
}

//菱形
public class lingxing{
	public static void main(String[] args){
        String s = "*";
        for(int j=0;j<5;j++){
            for(int i=0;i<4-j;i++){
                System.out.print(" ");
            }
            for(int i=0;i<2*j+1;i++){
                System.out.print(s);
            }
            System.out.println(); //输出行数为5的正中三角形
        }
        for(int j=0;j<4;j++){
            for(int i=0;i<j+1;i++){
                System.out.print(" ");
            }
            for(int i=0;i<7-2*j;i++){
                System.out.print(s);
            }
            System.out.println(); //输出行数为4的倒中三角形
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值