Java基础知识(二)

前言

衔接Java基础知识(一)

三十二、如何实现对象克隆

1.实现Cloneable接口并重写Object类中的clone()方法
2.实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

三十三、抽象方法、静态方法、本地方法

1.抽象方法需要子类重写
2.静态的方法是无法被重写的
3.本地方法是由本地代码实现的方法
4.synchronized和方法的实现细节有关

三十四、静态方法内部是否可以对非静态的方法的调用

不可以调用,静态方法只能访问静态成员变量,因为非静态方法的调用要先创建对象,在调用静态方法时可能对象并没有被初始化。

三十五、GC的概念、作用与算法

1.概念

GC–垃圾处理器

2.作用

1.自动检测对象是否超过作用域从而达到自动回收的目的。
2.垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存。

3.回收机制

分代复制垃圾回收、标记垃圾回收、增量垃圾回收

4.垃圾收集分区

伊甸园、幸存者乐园、终身颐养园

5.垃圾回收的调用

1.System.gc()
2.Runtime.getRuntime().gc()

6.关于GC的方法

1.引用计数
2.可达性分析

三十六、Java中final关键字的用法

1.修饰类:表示该类不能被继承;
2.修饰方法:表示方法不能被重写;
3.修饰变量:表示变量只能一次赋值以后值不能被修改(常量);

三十七、String s = new String(“xyz”);创建了几个对象

两个对象,一个是静态区的“xyz”,一个是用new创建在堆上的对象。

三十八、接口与抽象类的继承

1.接口可以继承接口,而且支持多重继承。
2.抽象类可以实现接口,抽象类可以继承具体类也可以继承抽象类。

三十九、一个.Java文件是否可以包含多个类(不是内部类)吗

可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。

四十、匿名内部类是否可以继承其他类?实现接口?

可以继承其他类或实现其他接口,在Swing和Android开发中,常用此方式来实现事件的监听和回调。

四十一、内部类可以引用他的包含类的成员吗?

一个内部类对象可以访问创建它的外部类成员,包括私有成员。

四十二、数据类型之间的转换

1.如何将字符串转换为基本数据类型

调用基本数据类型对应的封装类中的方法 parseXXX(String)或Value(String)即可返回相应基本类型

2.如何将基本数据类型转换为字符串

1.将基本数据类型与空字符串(“ ”)连接(+)即可获得所对应的字符串
2.调用String类中的valueOf()方法,返回相应字符串。

四十三、如何实现字符串的反转与替换

1.字符串反转

//1.StringBuilder
public static String reverse1(String str) {
	    return new StringBuilder(str).reverse().toString();
	  }
//2. toCharArray
	  public static String reverse2(String str) {
	    char[] chars = str.toCharArray();
	    String reverse = "";
	    for (int i = chars.length - 1; i >= 0; i--) {
	      reverse += chars[i];
	    }
	    return reverse;
	  }
//3.CharAt
	public static String reverse3(String str) {
	    String reverse = "";
	    int length = str.length();
	    for (int i = 0; i < length; i++) {
	      reverse = str.charAt(i) + reverse;
	    }
	    return reverse;
	  }
	public static void main(String[] args) {
	    String s = "abc123";

	    System.out.println("----------------");
	    for (int i = s.length() - 1; i >= 0; i--) {
	      System.out.print(s.charAt(i));
	    }
	    System.out.println("----------------");

	    System.out.println("变换前: " + s);
	    System.out.println("变换后: " + reverse1(s));
	    System.out.println("变换后: " + reverse2(s));
	    System.out.println("变换后: " + reverse3(s));
	  }

2.字符串替换

public static void main(String[] args)
    {
        String article="这是一个测试.";
        System.out.println(article);
        //把. 换成。
        article=article.replace('.','。');
        System.out.println(article);
 
        article=article.replace("一个","两个");
        System.out.println(article);
 
        article=article.replaceFirst("两个","一个");
        System.out.println(article);
    }

 输出结果:
 这是一个测试.
 这是一个测试。
 这是两个测试。
 这是一个测试。
 

四十四、如何将GB231编码的字符串转换为ISO-8859-1编码的字符串

String s1 = "你好";
String s2 = new String(s1.getBytes("GB231"),"ISO-8859-1");

四十五、获取日期和时间

public static void main(String[] args) {
        //获取当前的年、月、日、时、分、秒、毫秒、纳秒
        //年
        System.out.println(Calendar.getInstance().get(Calendar.YEAR));
        //JDK 1.8 java.time 包
        System.out.println(Year.now());
        System.out.println(LocalDate.now().getYear());
        
        //月
        System.out.println(Calendar.getInstance().get(Calendar.MONTH)+1);
        //JDK 1.8 java.time 包
        System.out.println(MonthDay.now().getMonthValue());
        System.out.println(LocalDate.now().getMonthValue());
        
        //日
        System.out.println(Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
        //JDK 1.8 java.time 包
        System.out.println(MonthDay.now().getDayOfMonth());
        System.out.println(LocalDate.now().getDayOfMonth());
        
        //时
        System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
        //JDK 1.8 java.time 包
        System.out.println(LocalTime.now().getHour());
        
        //分
        System.out.println(Calendar.getInstance().get(Calendar.MINUTE));
        //JDK 1.8 java.time 包
        System.out.println(LocalTime.now().getMinute());
        
        //秒
        System.out.println(Calendar.getInstance().get(Calendar.SECOND));
        //JDK 1.8 java.time 包
        System.out.println(LocalTime.now().getSecond());
        
        //毫秒
        System.out.println(Calendar.getInstance().get(Calendar.MILLISECOND));
        
        //纳秒
        System.out.println(LocalTime.now().getNano());
        
        
        //当前时间毫秒数
        System.out.println(System.currentTimeMillis());
        System.out.println(Calendar.getInstance().getTimeInMillis());
        
        
        //某月最后一天
        //2018-05月最后一天,6月1号往前一天
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, 2018);
        c.set(Calendar.MONTH, 5);
        c.add(Calendar.DAY_OF_MONTH, -1);
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1) + "-" + c.get(Calendar.DAY_OF_MONTH));
        //JDK 1.8 java.time 包
        LocalDate date = LocalDate.of(2019, 6, 1).minusDays(1);
        System.out.println(date.getYear() + "-" + date.getMonthValue() + "-" + date.getDayOfMonth());
        
        
        //格式化日期
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(0)));
        //JDK 1.8 java.time 包
        System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    }
    
输出结果:2020
2020
2020
3
3
3
21
21
21
12
12
37
37
48
48
664
664000000
1584765468664
1584765468664
2018-6-20
2019-5-31
1970-01-01 08:00:00
2020-03-21 12:37:48

//获取昨天的时间(前一天 today.minusDays(1),以此类推)
public static void main(String[] args) {
	LocalDateTime today = LocalDateTime.now();
	LocalDateTime yesterday = today.minusDays(1);
	System.out.println(yesterday);
	}
输出结果:2020-03-20T12:43:12.372

四十六、断言(assert)

断言是软件开发中一种常用的调试方式,很多开发语言都支持这种机制。断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试开启。为了保证程序的执行效率,在软件发布后,断言通常是关闭的;断言是一个包含Boolean表达式的语句,在执行这个语句时,假定该表达式为true;如果表达式的值为false,那么系统会报告一个AssertionError。

assert (a > 0); //throws an AssertionError if a <=0
1
1

断言可以有两种形式:

assert Expression1;
assert Expression1;Expression2;

Expression1 应该总是产生一个布尔值;
Expression2 可以得出一个值的任意表达式;这个值用于生成显示更多调试信息的字符串。

四十七、try{ }catch{ } finally{ }

try{}里的return语句,会被执行,载方法返回调用者前执行。

四十八、Java语言如何进行异常处理

关键字:throws、throw、try、catch、finally
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Trowable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获这个异常并可以对其进行处理。
Java的异常处理是通过五个关键字来实现的:throws、throw、try、catch、finally
一般情况下用try来执行一段程序,如果系统抛出(throw)一个异常对象,可以通过他的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理。
throw:明确地抛出一个异常
throws:用来声明一个方法可能抛出的各种异常(声明异常允许无病呻吟)
try:用来指定一块预防所有异常的程序;
catch:紧跟try后,用来指定你想要捕获的异常类型;
finally:确保一段代码无论发生什么异常的时候都要被执行
try语句可以嵌套,每当遇到一个try语句,异常的结构就会被放入到异常栈中,直到所有的try语句都完成。如果下一级的try语句没有对某种异常进行处理,异常栈就会执行出栈操作,直到遇到有处理这种异常的try语句或者最终将异常抛给JVM。

四十九、运行时异常与受检异常有何不同

运行时异常:虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
受检异常:与程序运行的上下文环境有关,即使程序设计无误,仍然可能因为使用的问题而引发。
Java编译器要求方法必须声明抛出可能发生的受检异常,但不要求必须声明抛出未被捕获的运行时异常。

五十、我们常见的异常

异常解释
NullPointerException空指针异常类
ClassCastException类型强制转换异常
ArrayIndexOutOfBoundsException数组下标越界异常
SecturityException安全异常
FileNotFoundException文件未找到异常
Runtime Exception运行时异常
ArithmeticExecption算数异常类
IllegalArgumentException非法参数异常

五十一、final、finally、finalize的区别

1.final:之前有过叙述,这里就不多赘述了
2.finally:放在try…catch…后,构造总是执行代码块,意味着无论程序正常执行还是发生异常,这里的代码只要JVM不关闭就能执行,可以将释放外部资源的代码写在finally中
3.finalize:Object类中的定义的方法,Java中允许使用finalize()方法在GC将对象从内存中清除出去之前做必要的清理工作。这个方法是由GC在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。

五十二、List、Set、Map是否继承Collection接口

1.List、Set是继承Collection接口;
2.Map是键值对映射容器;
3.与List、Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形。

五十三、阐述ArrayList、Vector、LinkedList

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值