首页 > 编程语言 >java期末选择题 知识点随记

java期末选择题 知识点随记

时间:2024-12-20 20:31:52浏览次数:6  
标签:返回 知识点 java String int 线程 字符串 方法 随记

Integer.parseInt(s);//字符整数转换器

用于将字符转换为整数

这个方法的功能是接收一个字符串输入,然后尝试将其转换为对应的整数值。如果字符串的内容无法被解析为整数(比如包含非数字字符或者格式不正确),那么这个方法会抛出一个 NumberFormatException 异常。

this(1.0)//调用当前类构造器

public class Circle {
    private double radius;

    // 无参构造器
    public Circle() {
        this(1.0); // 调用带一个参数的构造器,设置默认半径
    }

    // 带一个参数的构造器
    public Circle(double radius) {
        this.radius = radius; // 使用提供的半径参数
    }
}
  • 当你创建一个 Circle 对象时,如果不提供半径(即使用无参构造器 new Circle()),则会自动调用 this(1.0),这将调用带一个参数的构造器,默认设置 radius 为 1.0

java运行机制

半编译半解释型

源代码

程序员写的代码

处理器代码

处理器能够直接执行的代码

字节码

由java编译器将源代码转换为字节码(.class文件),再由JVM(java虚拟机)将字节码编译为本地机器代码

变量赋值

“0”开头表示该数为八进制数字,数位只能包含0~7,而078中,“8”违反了八进制,故会发生编译错误

源文件及主类

源文件可以多个,但必须且有且只能有一个主类,其余无主类的源文件可以是作为工具类或库类

局部变量初始化

class VarField {
     int i=99;
     void amethod(){
       int i;
       System.out.println(i);
     }
}

当调用amethod时,由于其内部重新定义了一个局部变量i,但未对其进行初始化赋值,而局部变量是不会有默认初始值0的,它的值是随机的,这将导致使用它是发生编译错误

方法重写与方法重载

方法重写指在继承父类的时候重新定义父类的方法,要求是重写的方法必须具有相同的名称、参数列表(即方法签名)和返回类型(只修改函数体)。

方法重载指在同一个类中定义多个方法,他们之间具有相同的名称但参数列表不同(参数的类型、数量或顺序不同)。

class VarInBase{
    int i=10;
    public void print(){
       System.out.println(""i=""+i);
    }
}
class VarInSub extends VarInBase{
    int i=100;
    public void print(){
        int i=1000;
        System.out.println(""i=""+i);
    }
}
public class Main{
    public static void main(String args[]){
        VarInBase m=new VarInSub();
        m.print();
    }
}

在该段代码中VarInSub继承了VarInBase,并重写了父类的print方法,这将使得后续创建VarInSub实例时,调用printf方法将优先使用子类重写的printf方法

Thread类

 Java 中已经打包好了的用于多线程编程的核心类

其中包含一些重要方法

  • start(): 启动线程,调用 run() 方法。在调用此方法后,线程会通过操作系统调度执行。

  • run(): 线程的主逻辑部分,包含线程执行的代码。一般情况下,这个方法会被覆盖。

  • sleep(long millis): 用于暂停当前线程一段指定的时间(毫秒)。可以用来控制线程的执行节奏。

  • join(): 等待线程完成。调用 t.join() 会使当前线程等待直到 t 线程结束。

  • getName() 和 setName(String name): 获取和设置线程的名称。

  • getPriority() 和 setPriority(int priority): 获取和设置线程的优先级。

math类

其中包含一些常用的方法,如

  • 随机数

    • Math.random(): 返回一个介于 0.0(包括)到 1.0(不包括)之间的随机 double 值。
  • 取整方法

    • Math.floor(double a):向下取整, 返回小于或等于 a 的最大整数(以 double 的形式,1.0)。
    • Math.ceil(double a): 向上取整,返回大于或等于 a 的最小整数(以 double 的形式,1.0)。
    • Math.round(double a): 四舍五入,返回 a 四舍五入后的整数(为 long ,长整型,1)。

StringBuffer类

字符缓冲类,可直接对字符串进行操作,无需创建新的字符串对象,高效处理字符

常用方法

  • append(String str):将指定字符串添加到此字符串缓冲区。
  • insert(int offset, String str):在指定位置插入字符串。
  • delete(int start, int end):删除指定范围的字符。
  • reverse():反转字符串内容。
  • capacity():获取当前容量。
  • length():获取当前长度(字符数)。
  • toString():将 StringBuffer 转换为 String 对象。

当当创建一个新的 StringBuffer 对象时,它的初始容量为16,此时若调用capacity(),则会返回16

equals

StringBuffer的equals方法默认为比较地址,重写后才能比较字面字符是否相同

thrm()

去除字符串两端的空白字符

String类

常用方法

    • length():返回字符串的长度。
    • charAt(int index):返回指定索引处的字符。
    • substring(int beginIndex, int endIndex):返回字符串的子串。
    • equals(Object another):比较两个字符串是否相等(区分大小写)。
    • equalsIgnoreCase(String another):比较两个字符串是否相等(不区分大小写)。
    • compareTo(String another):按字典顺序比较两个字符串。
    • trim():去除字符串两端的空白字符。
    • replace(char oldChar, char newChar):替换字符串中的字符。
    • toLowerCase()toUpperCase():转换字符串的大小写。
    • split(String regex):根据正则表达式分割字符串。
    • contains(CharSequence s):检查字符串是否包含特定的序列。

运算顺序影响执行结果

该题执行顺序为,先对“i+2”进行运算,得到112,再对“112+lukey”进行运算,得到112lukey

而本题为,先对“lukey+i”进行运算,得到lukey110,此为字符串形式,再对“lukey110+2”进行运算,得到lukey1102

总之,是从前往后两个两个进行处理

finalize()

清理代码,用于在对象被垃圾回收之前提供一个“最后一次机会”来执行清理操作。这包括关闭文件、释放外部资源、取消注册或注销对象等。它可以用来防止潜在的资源泄露。

不推荐,可能会引起性能问题,一般推荐使用Object.close()方法

Object类

即“实例类”,是所有java类的根类,即Java中的每个类都是object类的子类,不需显式导入

主要功能和方法

  1. equals(Object obj)

    • 用于比较两个对象是否相等。默认实现是比较对象的引用,即检查两个对象是否指向内存中的同一个位置。你可以在子类中重写这个方法来提供基于内容的相等性比较。
  2. hashCode()

    • 返回对象的哈希码值。默认实现是根据对象的内存地址计算哈希码。在重写equals()方法时,通常也需要重写hashCode()方法,以确保相等的对象有相同的哈希码。
  3. toString()

    • 返回对象的字符串表示。默认实现返回对象的类名和哈希码的无符号十六进制表示。通常在子类中重写这个方法以提供更有意义的信息。
  4. getClass()

    • 返回运行时的Class对象,它表示对象的动态类。
  5. wait()notify()notifyAll()

    • 这些方法是用于多线程编程中的同步控制。wait()使当前线程等待,直到另一个线程调用相同对象的notify()notifyAll()
  6. clone()

    • 用于创建并返回对象的一个副本。Object类中的实现会抛出CloneNotSupportedException,因此你需要在子类中实现Cloneable接口并重写clone()方法来提供对象的复制功能。
  7. finalize()

    • 这是一个过时的方法,用于对象被垃圾回收前执行清理操作。由于其使用上的限制和不确定性,现代Java编程中不推荐使用。

String特性

  1. 不可变性

    • String对象一旦创建,其内容就不能被改变。任何修改String的操作都会产生一个新的String对象。
  2. 常量池(String Pool)

    • Java虚拟机(JVM)有一个特殊的内存区域,称为字符串常量池,用于存储字符串字面量。如果两个字符串字面量相同,它们将共享同一个String对象的引用,这样可以节省内存。

等等...

如下题

在第三行中,String对象 str已经被创建,并初始化为123,这意味着后续将不能对 str 进行操作,如修改,增添,删减等

String str = "    abcd123";
str.toUpperCase();
str.trim();
System.out.println(str);//abcd123
  1. str.toUpperCase();:这个方法调用会返回一个新的字符串,它是 str 的大写版本(即 " ABCD123"),但这个新字符串并没有被赋值给任何变量,因此它不会改变 str

  2. str.trim();:这个方法调用会返回一个新的字符串,去掉 str 开头和结尾的空格(即 "abcd123"),同样这个新字符串也没有被赋值给任何变量,因此它也不会改变 str

字符串常量是对象

String 对象存储字符串的效率比 StringBuilder 低

new出来的对象不共享

new完后成为一个新的对象,即使字符相同,二者的地址也不一样

成员变量继承

子类可以直接使用父类的成员变量

调用变量父类优先,调用方法子类优先

但当子类定义了一个和父类一样的成员变量,那么父类中相同的成员变量将会隐藏,直接使用时调用的是子类的成员变量

instanceof关键字

实例检查

用于判断某个对象是否为某个类型的实例,并返回布尔值

无论instanceof前面的还是后面的都对(继承关系)

A a = new B();

多态概念

创建了一个B的对象,当类型是A

这将使得a可以调用A的方法,也可以调用B中重写A的方法,但是不能调用B中独有的方法,成员同理

static静态块

只有当所有静态块按顺序执行完毕后,main方法才会执行

静态方法

直接通过类本身调用,而不是实例

静态方法不能被继承,也就是说,子类不会覆盖父类的静态方法。相反,子类的静态方法会隐藏父类的同名静态方法。

Integer.parseInt

可用于进制转换

String binaryString = "110"; // 二进制
int binaryNumber = Integer.parseInt(binaryString, 2);
System.out.println(binaryNumber); // 输出: 6

String hexString = "1A"; // 十六进制
int hexNumber = Integer.parseInt(hexString, 16);
System.out.println(hexNumber); // 输出: 26

compareTo

按字典序比较ASCII码值

小于放返回负数,大于返回正数,相等返回0

equalsIgnoreCase

忽略大小写比较字符

String str1 = "sdut12"; 
String str2 = "sDut12";
System.out.println(str1.equalsIgnoreCase(str2));//true

ArrayList 动态数组

特性

动态增减,无需定义;元素有序;可重复

  • 动态数组ArrayList 允许你动态地增加或减少元素的数量,而不需要事先定义一个固定大小的数组。
  • 有序性ArrayList 保持元素的插入顺序。
  • 允许重复ArrayList 允许存储重复的元素。

主要方法

  • add(E e):在列表的末尾添加指定的元素。
  • add(int index, E element):在指定位置插入元素。
  • remove(int index):删除指定位置的元素。
  • get(int index):返回指定位置的元素。
  • set(int index, E element):用指定元素替换指定位置的元素。
  • size():返回列表中元素的数量。
  • clear():清空列表中的所有元素。
  • contains(Object o):检查列表是否包含指定的元素。

编码解码

编码 getBytes(StandardCharsets.UTF_8),括号中放待编码类型

解码 new String(encodedBytes, StandardCharsets.UTF_8),第一个放待解码对象,第二个放要解码成的类型

输入流 read

读取结束后返回-1

返回值

  • 返回一个字节(int 类型),表示读取的字节的值(范围在 0 到 255 之间)。
  • 当到达流的末尾时,返回 -1,表示没有更多的数据可供读取。

只会返回int类型,不会返回NULL

字节流与字符流

区别在于每次读写数据的组织单位不同

字节流以字符为单位读写

字节流以字节为单位读写

文本中读取内容

Piped stream

管道流

用于在两个线程(通常在同一进程中)之间进行数据传输。它可以实现"管道"的效果,一个线程写入数据,另一个线程读取这些数据。这种流很好地支持进程间(或线程间)通信。

命名规范

  1. 变量名必须以字母(a-z,A-Z)、美元符号($)或下划线(_)开头,不能以数字开头。
  2. 变量名可以包含字母、数字、美元符号和下划线,但不能包含其他字符,例如空格或连字符(-)。
  3. 变量名不能与 Java 关键字相同。
  4. 变量名一般使用驼峰命名法。

StringBuilder类

StringBuilder 是可变的,它允许在原有的字符串基础上进行增删操作而不生成新的对象。

相较于StringBuffer,StringBuilder 是非线程安全的,而 StringBuffer 是线程安全的。由于线程安全机制会增加额外的开销,所以在单线程环境下,StringBuilder 通常会比 StringBuffer 更快。

Join()

属于Thread类,用于实现线程间的同步,确保某个线程在另一个线程完成执行之前不会继续执行

功能

  • join() 方法使当前线程等待直到调用 join() 方法的线程终止。换句话说,被 join() 方法调用的线程完全执行完毕之前,调用该方法的线程会被阻塞。

线程优先级

主函数,新建线程默认为普通优先级 5

线程优先级的等级一般是从 1 到 10,1 是最低优先级,10 是最高优先级。

字符串处理

substring用于返回指定字符串,第一个空为开头位置(按索引),第二个为截止位置(不输出)

replace用于替换字符串的某个内容(所有),第一个填需要替换的,第二个填替换后的。此方法可以用来替换字符串中的指定字符或字符串。在这种情况下,可以使用 replace(" ", "") 来将字符串中的所有空格替换为一个空字符串,从而有效地去除所有空格。

trim 用于去除字符串头尾的空格,但不能去除内部的

short 取值范围

−215 ~ 215-1

封装优点

可以不需要改变接口来改变实现,以达到外部使用代码无需改变。

IS-A关系

什么是什么

Collection 接口

Collection 接口定义了一系列重要的方法,这些方法用于集合的操作,包括:

  • 元素添加和移除

    • boolean add(E e): 将指定的元素添加到集合中(如果集合允许重复,返回 true)。
    • boolean remove(Object o): 从集合中移除指定的元素(如果存在,返回 true)。
  • 元素访问

    • int size(): 返回集合中的元素数量。
    • boolean isEmpty(): 判断集合是否为空。
    • Iterator<E> iterator(): 返回集合中元素的迭代器,允许遍历集合中的元素。
  • 集合操作

    • boolean contains(Object o): 判断集合是否包含指定的元素。
    • Object[] toArray(): 将集合转换成数组。
    • <T> T[] toArray(T[] a): 将集合转换成指定类型的数组。
  • 集合间的操作

    • boolean addAll(Collection<? extends E> c): 将指定集合中的所有元素添加到当前集合中。
    • boolean removeAll(Collection<?> c): 从当前集合中移除指定集合中的所有元素。
    • boolean retainAll(Collection<?> c): 仅保留当前集合中在指定集合中的元素。

标签:返回,知识点,java,String,int,线程,字符串,方法,随记
From: https://blog.csdn.net/Prometheus_17/article/details/144534207

相关文章

  • Java 基础概览
    1.Java语言概述1.1Java简史Java是一种高级程序设计语言,由SUN(StanfordUniversityNetwork,斯坦福大学网络公司)公司于1995年推出,JamesGosling设计Java语言,并开发了Java编译器和Java虚拟机,因此也被人尊称为“Java之父”。SUN公司在2009年被Oracle(甲骨文)收购,此后持续更新,目前......
  • 【java面向对象编程】第二弹----成员方法
    笔上得来终觉浅,绝知此事要躬行 ......
  • Java实现单词的翻译(详解爬虫操作)
    JAVA通过Crawler实现英语单词的翻译首先声明一点,这种方法仅限于低频次的交互来获取翻译信息,一旦一秒内大量的请求会被重定向,那就直接不能用了如果希望可以批量查询英语单词翻译,可以查看我的下一篇博客。接着我们上一讲Java如何用HaspMap统计次数并排序详解-ivanlee717-博......
  • java中FileInputStream和FileOutputStream类
    一、介绍FileInputStream类与FileOutputStream类都用来操作磁盘文件,提供了基本的文件写入能力。二、FileInputStream类常用的构造方法1、FileInputStream(Stringname)2、FileInputStream(Filefile)第一个构造方法使用给定的文件名name创建一个FileInputStream对象,第二个......
  • Java-IO流(持续更新中)
    IO流文件什么是文件文件,对我们来说并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文档,excel文件…都是文件。它即可以保存一张图片,也可以保持视频,声音文件流文件是在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据......
  • web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript
    ......
  • Java中使用java.time.LocalDate按日期范围生成日期序列
    需求:配置起止日期,计算两个日期间所有的天数,或者当前日期到配置日期间的所有天数,无需关心月份是28天或是31天日期区间为左闭右开,需要闭区间自行处理场景:按日期执行某些业务,数据库记录上次执行日期,计算出配置日期到今天的所有日期,遍历执行,最后更新上次执行日......
  • 12.10【java exp4】【debug】
    pro1如何知道哪个环境出错了?如何知道nginx的在后端添加跨域处理的时候,localhost一开始写的是https,所以不行,改成http后就可以了pro2登录后,向后端服务器发送申请,nginx会自动发送出一个/auth/check请求,进行验证;但是auth认证服务器并没有受到check请求,同时前台页面会直......
  • Java基于springboot+vue的旧时光咖啡厅管理系统
    收藏关注不迷路!!......
  • #Java篇:java项目init和写接口流程步骤详细
    idea里面file—new-projectServerurlhttps://start.aliyun.com目录结构数据库链接项目配置application.ymlserver:port:8888spring:datasource:url:jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8username:......