提示:马上就要期末了,真的无语啦~~~~~~~
笔记目录
前言
这里是提示&分隔符
一、Java随记
Part Ⅰ| 待分类
0. 考试范围
题型 | 数量 | 分值 | 总分 | 方式 | 范围 |
---|---|---|---|---|---|
判断 | 10 | 1 | 10 | 从题库抽 | |
选择 | 10 | 2 | 20 | 从题库抽 | |
函数 | 3 | 16 | 48 | 题库抽1个,新加2个 | 类定义、接口、线程 |
编程 | 2 | 11 | 22 | 题库抽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
}
区别如下:
- 作用不同:
throws用于声明该方法内抛出了异常
throw用于程序员自行产生并抛出异常 - 使用的位置不同:
throw位于方法体内部,可以作为单独语句使用
throws必须跟在方法参数列表的后面,不能单独使用 - 内容不同:
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对象类型转换
转换规则
-
父类可以向子类转型
-
如果两种类型之间没有继承关系,那么将不允许进行类型转换。
Dog dog = new Dog(); Cat cat = (Cat)dog; // 编译出错,不允许把Dog对象类型转换为Cat对象类型
7.线程
7.1 线程的生命周期
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. 判断题
- 预处理命令的前面必须加一个“#”号。(Y)
在程序运行中可以改变其类型的叫做实型变量
返回值与函数类型不一致的情况下,将自动转换成函数类型
全局变量与局部变量重名时,全局变量不具有局部的作用域