Java基础总结

16 篇文章 0 订阅

Java基础总结

第一章 概述

1. 应用程序的结构:package import class
2. 源文件的扩展名.java,字节文件的扩展名:.class
3. Java语言的工作原理:先编译后解释
4. 一个源文件中最多可以有一个public类,并且文件名与public类名相同。
5. 常用命令javac编译,java运行。
6. 一个应用程序最少有一个main方法。

第二章 Java基础

1. 标识符命名规则,能够区分合法标识符
标识符命名规则
1. 标识符由26个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
2. 不能以数字开头,不能是关键字。
3. 严格区分大小写。
4. 标识符的可以为任意长度。
2. 所有关键字都是小写
3. 基本数据类型的名称、长度和默认值,注意float类型的定义方法:float f=3.14F;float f=3.14f;没有大写或者小写f是错误的。
4. while和do-while的区别
  • do-while语句

    后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。

  • while语句

    前测试循环语句,即在循环体内的代码被执行之前,就会对出口条件求值。

5. 数组使用length属性获得长度
int[] arr={"11","22",33"};
arr.length;//3
6. int [] a,b,c是定义了3个数组,int a[],b,c是定义了一个数组a,两个变量b,c
7. 掌握基本数据类型的名称、长度、默认值和数据类型对应的封装类

8. 字符串转基本类型的方法
  • 字符串转换为基本类型

    1. Integer包装类的parseXxx静态方法
    2. Integer包装类的valueOf()方法[自动拆箱]

    String str = “123”;

    int a = Integer.parseInt(str);

    int b = Integer.valueOf(str);

  • 基本类型转换为字符串

    1. Integer包装类的toString()方法
    2. String类的valueOf()方法
    3. n + “”

    int n = 6;

    String str = Integer.toString(n);

    String str = String.valueOf(n);

    String str = n + “”;


第三章 类和对象

1. 什么是方法的重载
  • 名字相同,参数列表不同的两个(或多个)方法

    1. 参数类型不同
    2. 参数个数不同
  • 重载方法的依据方法参数列表的不同,是编译器用来区分调用哪一个

2. 构造方法是用来进行成员变量初始化的
3. 构造方法的名字和类名相同
4. 构造方法可以有也可以没有,没有系统会自动添加一个无参的方法,也可以有多个构造方法,构造方法可重载
5. static关键字可以修饰变量和方法,可以使用类名直接调用,也可以使用对象调用
6. public、private、默认、peorected修饰符可以修饰什么?作用范围分别是什么
  • public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
  • private:私有.就是除了class自己之外,任何人都不可以直接使用,即便是子女,朋友,都不可以使用。
  • protected:对于子女、朋友来说,是public可以自由使用,没有限制,而对于其他的外部class,protected就变成private。
  • 默认(无修饰词),同一个包内可以访问,包级访问权限;

权限修饰符用来修饰类、接口、方法、变量。

  • 修饰类:public、默认(default)。
  • 修饰接口:public、默认(default)。
  • 修饰方法:private、默认、protected、public
  • 修饰变量:private、默认、protected、public

在这里插入图片描述

7. 类、方法和变量等可以使用多个修饰符修饰
8. 所有类的直接或者间接父类是Object类

第四章 继承

1. 类之间使用extends关键字继承
2. 子类继承父类成员后,在子类中定义与父类相同的成员叫重写(覆盖)
3. final修饰类、变量和方法,不能被继承和改写
4. Java所有的类都是java.lang.Object类的子类

第五章 抽象类、接口

1. 定义接口使用interface,实现接口implements
2. abstract修饰的类为抽象类,方法为抽象方法,抽象方法没有方法体
3. 抽象类可以没有抽象方法,有抽象方法的类必定是抽象类
4. 使用interface关键字定义接口,类使用implements实现(继承)接口
5. 接口中只有常量和抽象方法,并且都是public abstract的抽象方法,都是public static final的常量
6. 接口可以实现多重继承,定义类的模板
7. 多态有两种体现重载和重写(覆盖),重载称为编译时多态,重写为运行时多态

第六章 字符串

1. 字符串分为静态字符串(String)和动态字符串(StringBuffer)
2. 使用length()方法获得字符串的长度
String str="asdfghjkl";
str.length();//9
3. 其他常用方法chatAt()、equals()
  • chatAt()

    • 返回位于字符串的指定索引处的字符
  • equals()

    1. 所有的对象都拥有标识(内存地址)和状态(数据),“==”比较两个对象的的内存地址,使用Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。
    2. String、Math等封装类都对equals()方法进行了重写。比较的是两个对象的状态

第七章 异常处理

1. 什么是异常
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
在程序执行期间发生的事件,它中断正在执行的程序的正常指令流。
2. 为什么要进行异常处理

为了能够及时有效地处理程序中的运行错误,必须使用异常类。

  • 用户输入了非法数据。
  • 要打开的文件不存在。
  • 网络通信时连接中断,或者JVM内存溢出。
3. 所有异常的父类是Throwable类,它有两个直接子类为Error和Exception
  • Error:程序无法处理的错误,表示运行应用程序中较严重问题。恢复不是不可能但很困难的情况下的一种严重问题。

    例如,内存溢出,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

  • Exception:是程序本身可以处理的异常。
    exception 设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况

4. 异常分为运行时异常和非运行时异常

unchecked exception 非检查异常

  • 运行时异常(RuntimeException)
  • Error

对于运行时异常,java编译器不要求必须进行异常捕获处理或者抛出声明,由程序员自行决定。

checked exception 非运行时异常(运行时异常以外的异常就是非运行时异常)

  • java编译器强制程序员必须进行捕获处理,比如IOExeption和SQLException。
  • 对于非运行时异常如果不进行捕获或者抛出声明处理,编译都不会通过。
5. 异常的处理过程是先抛弃后捕获
6. 处理方法有三种:
  • 运行时异常可回避
  • throws可回避交给上级调用模块处理
  • try-catch-finally自行处理
7. 进行异常捕获时,先发生的放在前面,后发生的放后面;子类异常放前面,父类放后面
8. 使用throw制造异常

throw 抛出的只能够是可抛出类Throwable 或者其子类的实例对象


第八章 输入输出

1. 输入输出需要引入java.io包
2. 文件和目录使用File类
3. InputStream和OutputStream是字节输入输出流父接口,Reader和Writer是字符输入输出流父接口
4. 完成文件内容拷贝练习题

第九章 JDBC

1. 需要引入的包是java.sql

第十章 事件处理

1. 事件处理模型是授权处理模型
2. 常用的五种布局管理器是哪些?
  • FlowLayout 流式布局
  • BorderLayout 边框式布局
  • GridLayout 网格布局
  • CardLayout 卡片布局
  • BoxLayout 盒式布局
3.JFrame的默认布局管理器是BorderLayout
4. JPanel是FlowLayout,FlowLayout的控件大小不随容器大小变化而改变

第十章 多线程

1 .线程的状态:初始状态、就绪状态、运行状态、阻塞状态、终止状态;新建的线程不能立即运行
2. 启动线程需要调用start()方法,不需要调用run()方法
3. 在定义Thread类时,run()方法必须要重写
4. 线程提供了wait、notify和notifyAll方法实现线程的同步
  • start():启动线程

  • wait():将当前线程置入休眠状态

  • notify():唤醒在此对象监视器上等待的单个线程。

  • notifyAll():唤醒在此对象监视器上等待的所有线程。

  • setPriority():更改线程的优先级。

  • join():使其他线程等待当前线程终止

  • interrupt():中断线程

  • isAlive():测试线程是否处于活动状态。
    static:

  • sleep():线程休眠

  • yield():暂停当前正在执行的线程对象,并执行其他线程。

  • currentThread():返回对当前正在执行的线程对象的引用。

5. 线程的优先级从1到10,程序员可以在编程时定义
6. 创建线程的方法继承Thread类和实现Runnable方法

第十一章 网络编程

1. TCP编程使用ServerSocket和Socket,采用流式进行通讯,Socket代表客户端,ServerSocket代表服务器端
2. 与网络通讯相关的类都封装在java.net包下

编程题

1、评委打分
package dafen;

import java.util.Arrays;
import java.util.Scanner;

public class a1 {
	
	public static void main(String[] args) {
		//评委打分
		Scanner scanner = new Scanner(System.in);
		int N=scanner.nextInt();
		int[] arr = new int[N];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = scanner.nextInt();
		}
		Arrays.sort(arr);
		int score=0;
		for (int i = 1; i < arr.length-1; i++) {
			score += arr[i];
		}
		System.out.println("最终得分:"+score/(arr.length-2));	
	}
	
	
}

2、工厂零件
//Area.java
package area;

import java.util.Scanner;

import area.JieKou.Jiekou;


public class Area {

	public static void main(String[] arg)
	{
		//工厂零件求面积
		Scanner scanner = new Scanner(System.in);
		double r;
		r=scanner.nextDouble();
		Jiekou jk = new Yuan(r);
		System.out.println(jk.getArea()+" "+jk.getZhouchang());
		h=scanner.nextDouble();
		Jiekou jk = new YuanZhu(r,h);
		System.out.println(jk.getArea()+" ");
	}
}

//JieKou.java
package area;

public class JieKou {

	public interface Jiekou
	{
		double getArea();
		double getZhouchang();
	}
}

//Yuan.java
package area;

import area.JieKou.Jiekou;

public class Yuan implements Jiekou{

	private final double PI = 3.14;
	private double r;
	
	public Yuan() {}
	
	public Yuan(double r)
	{
		this.r = r;
	}
	
	public double getArea()
	{
		return PI*r*r;
	}

	public double getZhouchang()
	{
		return 2*PI*r;
	}
}
//YuanZhu.java
package area;

public class YuanZhu extends Yuan{

	private double h;
	
	public YuanZhu(double r,double h)
	{
		super(r);
		this.h=h;
	}
	public double getArea() {
		return (super.getArea()*h);
	}
	
}


3、文件copy操作
package file;

import java.io.*;
public class filecopy {

	public static void main(String[] avg) throws Exception
	{
		try {
			//复制
			song();
			//字符读写 切割处理
			rwFileSplitEnglish();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


	private static void rwFileSplitEnglish() throws Exception {
		String str = "";
		//FileReader reader = new FileReader("fileIn\\txt1");
		BufferedReader reader = new BufferedReader(new FileReader("fileIn\\txt1"));
		
		int len;
		while((len = reader.read())!=-1)
			str +=(char)len;
		reader.close();
		
		System.out.println(str);
		
		String re  = " ";
		String s[] = str.split(re);
		
		for (int i = 0; i < s.length; i++) {
			System.out.print(s[i]);
		}
		System.out.println(str.length());
	}
	
	private static void song() throws Exception {
		InputStream in = new FileInputStream("fileIn\\你一生的故事.mp3");
		
		OutputStream out =  new FileOutputStream("fileOut\\你一生的故事2.mp3");
		int len;
		long begintime = System.currentTimeMillis();
		while((len=in.read())!=-1)
		{
			out.write(len);
		}
		long endtime = System.currentTimeMillis();
		System.out.println(endtime-begintime);
		in.close();
		out.close();
	}
}

4、JDBC

Dao模式

  • 58
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值