数媒大一下Java期末复习笔记

这篇博客详细总结了Java和C语言的关键知识点,包括Java的字符判断、构造方法、接口、异常处理、对象转换及线程操作,以及C语言的字符串长度计算、结构体和异常处理。同时,博主分享了编程练习题和错题集,帮助读者巩固学习。
摘要由CSDN通过智能技术生成

提示:马上就要期末了,真的无语啦~~~~~~~


前言

这里是提示&分隔符


一、Java随记

Part Ⅰ| 待分类

0. 考试范围

题型数量分值总分方式范围
判断10110从题库抽
选择10220从题库抽
函数31648题库抽1个,新加2个类定义、接口、线程
编程21122题库抽1个,新加2个类定义、综合:抽象类、集合

1.判断字符类型的方法

1) Java自带语法 Character.getType();
	for(String t : s1)
	{
		//System.out.print(Character.getType(t.charAt(0)) + " ");
		// 小写字母 2;数字 9;大写字母 1;其他字符 24 27 21;空格 12;
		switch(Character.getType(t.charAt(0))) {
		case 1:
		case 2:
			n_letters++;
			break;
		case 9:
			n_digits++;
			break;
		case 12:
			n_blanks++;
			break;
		default:
			n_other++;
		}
	}
2) ASCII码 & 在Java中如何获取输入字符的ASCII码 (int)s.charAt(0);
	Scanner in = new Scanner(System.in);
	String a = in.next();
	System.out.println((int)a.charAt(0));

2.在无参构造方法中调用有参构造方法 this(2,1);

	Cylinder(int r, int h){
		System.out.println("Constructor with para");
	}
	Cylinder(){
		this(2,1);
		System.out.println("Constructor no para");
	}

运行结果如下:

Constructor with para
Constructor no para

3. 接口

3.1 如何定义 & 被实现?

接口定义如下:
(接口内部的方法只用写个方法头)

interface Animal {
   public void eat();
   public void travel();
}

接口中的每个方法都需要被实现:

public class MammalInt implements Animal{
   public void eat(){
      System.out.println("Mammal eats");
   }
   public void travel(){
      System.out.println("Mammal travels");
   } 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}
3.2 多继承
public interface Hockey extends Sports, Event

4. 抽象类

4.1 如何理解抽象类?

抽象类通常用于一些无法被实例化的东西,即这个类没有包含足够的信息来描绘一个具体的对象,比如:Shape类。

4.2 抽象类的定义

抽象类的定义里面可以填写具体的方法,不用只写一个语句来说“我要哪些方法”。

public abstract class Test{
	public void print(){
	}
}

注意:
1. 如果一个类包含抽象方法,那么该类必须是抽象类。
2. 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

5.异常

5.1 捕获异常

一个基本的捕获异常程序如下:

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

其中,finally关键字表示无论是否发生异常,finally代码块中的代码终会被执行。

5.2 throw/throws 关键字

一般在抓到异常之后,无法处理的情况下,再次将异常抛出。
用法如下:

import java.io.*;
public class className
{
   public void withdraw(double amount) throws RemoteException,InsufficientFundsException
   {
       	// Method implementation
	    throw new RemoteException();
   }
   //Remainder of class definition
}

区别如下:

  1. 作用不同:
    throws用于声明该方法内抛出了异常
    throw用于程序员自行产生并抛出异常
  2. 使用的位置不同:
    throw位于方法体内部,可以作为单独语句使用
    throws必须跟在方法参数列表的后面,不能单独使用
  3. 内容不同:
    throw抛出一个异常对象,且只能是一个
    throws后面跟异常类,而且可以有多个

如果在某个方法内要使用throw抛出异常,就必须在方法名后加throws或者使用 try-catch包裹住这个异常。
在使用会抛出异常的方法时,必须使用try-catch语句块处理方法要throws的所有异常

5.3 声明自定义异常
class MyException extends Exception{
}

Tips:
1. 所有异常都必须是 Throwable 的子类。(Exception 继承自 Throwable)
2. 如果希望写一个检查性异常类,则需要继承 Exception 类。
3. 当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常
4. 在子类的构造函数中,必须声明父类可能抛出的全部异常

6.Java对象类型转换

转换规则
  1. 父类可以向子类转型

  2. 如果两种类型之间没有继承关系,那么将不允许进行类型转换。

    Dog dog = new Dog();
    Cat cat = (Cat)dog;    // 编译出错,不允许把Dog对象类型转换为Cat对象类型
    

7.线程

7.1 线程的生命周期

sadfasdf

7.2 创建一个线程的三种方法
  • 通过实现 Runnable 接口;
  • 通过继承 Thread 类本身;
  • *(通过 Callable 和 Future 创建线程)。

实现 Runnable:

import java.util.Scanner;
/*这里放置你的答案,即PrintTask类的代码*/
class PrintTask implements Runnable{
	private int n;
	public PrintTask(int parseInt) {
		// TODO Auto-generated constructor stub
		this.n = parseInt;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i = n - 1; i >= 0; i--)
		{
			System.out.println(i);
		}
		System.out.println(Thread.currentThread().getName());
	}
	
}
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        PrintTask task = new PrintTask(Integer.parseInt(sc.next()));
        Thread t1 = new Thread(task);
        t1.start();
        sc.close();
    }
}

实现线程接口都要实现run()方法

继承Thread:

import java.util.Scanner;

/*这里放置你的答案,即PrintTask类的代码*/

class PrintTask extends Thread{
	private int n;
	public PrintTask(int parseInt) {
		// TODO Auto-generated constructor stub
		this.n = parseInt;
	}
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		for(int i = n - 1; i >= 0; i--)
		{
			System.out.println(i);
		}
		System.out.println(Thread.currentThread().getName());
	}
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        PrintTask task = new PrintTask(Integer.parseInt(sc.next()));
        Thread t1 = new Thread(task);
        t1.start();
        sc.close();
    }
}

继承类必须重写 run() 方法,该方法是新线程的入口点。它也必须调用 start() 方法才能执行。

8. Java中double类型的输出格式 %f


PART Ⅱ | 错题集

1. 判断选择

3. 函数题

1. Object

题目&答案:
https://blog.csdn.net/wct3344142/article/details/102922558

2.List中指定元素的删除

String[] t = line.split(" ");
这种时候,空格被分割出来后是

""

而不是

" "

4. 编程题

4.1 圆形继承

https://blog.csdn.net/ihopeyousuccess/article/details/111306454


二、C语言随记

PART Ⅰ | 待分类

1.求字符串长度 strlen();

	char s [100];
	scanf("%s", &s);
	strlen(s);//可求字符串 s 的长度;

2.double类型的输入格式 : %lf

	double test;
	scanf("%lf", &test);

3.结构体 struct

对于结构体,我们可以类比Java当中“类”的概念。结构结构,即是指一个框架、骨架,我们建立好结构体之后,随时可以拿这个骨架来装填肌肉(值)进去,形成一个鲜活的肉体。

3.1 定义一个标准的结构体的方法如下:

struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book;

注意事项:
1. struct语句大括号后面要加上“;”结束语
3. 在一般情况下,Books、char xxx、book 这 3 部分至少要出现 2 个。

3.2 如何初始化
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book = {"Learn More, Study Less", "Scott Young", "Learning", 123456};
3.3 如何使用指针?void printBook(struct Book *book)

为了访问该结构的指针访问该结构的成员,应该使用"->"运算符

即 将Java常用的方式:

book.title

变为了👇

book->title

实例如下:

void printBook( struct Books *book )
{
   printf( "Book title : %s\n", book->title);
   printf( "Book author : %s\n", book->author);
   printf( "Book subject : %s\n", book->subject);
   printf( "Book book_id : %d\n", book->book_id);
}

4. C语言中的真假

C语言中,0代表真,非0表示假。

5. 宏定义不需要分号

#define SIZE = 10  int a[SIZE]

PART Ⅱ | 错题集

1. 判断题

  1. 预处理命令的前面必须加一个“#”号。(Y)
  2. 2.
    在程序运行中可以改变其类型的叫做实型变量
    在这里插入图片描述
    返回值与函数类型不一致的情况下,将自动转换成函数类型

    全局变量与局部变量重名时,全局变量不具有局部的作用域

2. 选择题

3. 函数题

4. 编程题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值