
JavaSE知识讲解和课后练习
文章平均质量分 89
小丁学Java
这个作者很懒,什么都没留下…
展开
-
Day22_JDK新特性(Lambda表达式,Optional类,StreamAPI,方法引用与构造器引用,java9-17新特性)
在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。编程中的函数,也有类似的概念,你调用我的时候,给我实参为形参赋值,然后通过运行方法体,给你返回一个结果。对于调用者来做,关注这个方法具备什么样的功能。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是谁来做。生活举例:当我们需要从北京到上海时,可以选择高铁、汽车、骑行或是徒步。我们的真正目的是到达上海,而如何才能到达上海的形式并不重要,所以我们一直在探索有没原创 2024-02-23 11:29:52 · 1297 阅读 · 0 评论 -
Day21_反射(Class类,类加载,反射的基本应用,自定义注解,获取泛型父类信息)
注解是以“@注释名@Override注解Annotation是从JDK5.0开始引入。虽然说注解也是一种注释,因为它们都不会改变程序原有的逻辑,只是对程序增加了某些注释性信息。不过它又不同于单行注释和多行注释,对于单行注释和多行注释是给程序员看的,而注解是可以被编译器或其他程序读取的一种注释,程序还可以根据注解的不同,做出相应的处理。所以注解是插入到代码中以便有工具可以对它们进行处理的标签。一个完整的注解应该包含三个部分:(1)声明(2)使用(3)读取。原创 2024-02-23 11:22:11 · 873 阅读 · 0 评论 -
Day20_网络编程(软件结构,网络编程三要素,UDP网络编程,TCP网络编程)
B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。IP地址分类方式一:IPv4:是一个32位的二进制数,通常被分为原创 2024-02-23 11:02:25 · 1282 阅读 · 0 评论 -
Day19_多线程(相关概念,另行创建和启动线程,Thread类,线程安全,等待唤醒机制,面试题)
Day19_多线程(相关概念,另行创建和启动线程,Thread类,线程安全,等待唤醒机制,面试题)原创 2024-02-23 10:58:14 · 815 阅读 · 0 评论 -
day18_File类和IO流-课后练习 - 参考答案
把今天的作业文件夹day22_homework下的《我想对你说.txt》字符编码为GBK,复制到当前项目的testIO文件夹下的《柴老师的话.txt》字符编码为UTF-8。 2、获取D盘的testIO文件夹下的a.txt文件的文件名,文件大小,文件的绝对路径和父路径等信息,并将信息输出在控制台。 2、使用相对路径,在当前项目下创建一个testIO文件夹,然后在testIO文件夹中创建一个1.txt文件。 5、删除当前项目下的testIO文件夹下的1.txt文件,然后删除testIO文件夹。原创 2024-02-23 10:51:45 · 840 阅读 · 0 评论 -
Day18_File类与IO流(缓冲流,转换流,数据流与对象流,System.in,System.out,Scanner,try...catch)
生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。原创 2024-02-23 10:48:06 · 1092 阅读 · 0 评论 -
关于HashMap的面试问题(26问面试题)
1、HashMap的底层实现。2、HashMap的数组的元素类型。3、为什么要使用数组?4、HashMap的数组的初始化长度。5、HashMap的映射关系的存储索引index如何计算。6、HashMap 为什么使用 &按位与运算代替%模运算?7、为什么要使用hashCode()? 空间换时间。8、为什么数组还需要链表?或问如何解决hash或[index]冲突问题?9、hash()函数的作用是什么。原创 2024-02-23 08:32:17 · 3061 阅读 · 0 评论 -
Day17_集合与数据结构(链表,栈和队列,Map,Collections工具类,二叉树,哈希表)
数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。(1)数据的逻辑结构指反映数据元素之间的逻辑关系,而与他们在计算机中的存储位置无关:(2)数据的物理结构/存储结构:是描述数据具体在内存中的存储(如:数组结构、链式结构、索引结构、哈希结构)等,一种数据逻辑结构可表示成一种或多种物理存储结构。数据结构和算法是一门完整并且复杂的课程。Java的核心类库中提供很多数据结构对应的集合类型,例如动态数组、双向链表、顺序栈原创 2024-02-22 14:23:57 · 1609 阅读 · 0 评论 -
day16_map课后练习 - 参考答案
(1)用String[] nums = { “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”, “Q”, “K”, “A”, “2” }; (4)用nums和colors数组的组合,将54张牌存储的一个Map中,key是索引,范围是1-54,value是牌面,例如:(1,黑桃3),…(4)把所有省份的城市存储到一个LinkedHashMap集合中,其中省份名是key,该省份的所有城市用一个ArrayList的集合装起来,然后作为value。原创 2024-02-22 14:12:21 · 964 阅读 · 0 评论 -
day16_List&Set课后练习题 - 参考答案
案例:双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。案例:键盘录入一个字符串,去掉其中重复字符,打印出不同的那些字符,必须保证顺序。(1)用Comparable接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。 1、随机生成10个[1,100]之间的整数,放到List集合中,遍历显示。 2、创建集合,集合存放随机生成的30个小写字母。 3、用listTest统计,某些元素的出现次数。 4、用上面的数组,生成一副扑克牌。原创 2024-02-22 14:09:29 · 1040 阅读 · 0 评论 -
Day16_集合与泛型(泛型类与泛型接口,泛型方法,类型变量的上限与泛型的擦除,类型通配符)
类型>这种语法形式就叫泛型。是类型变量(Type Variables),而是代表未知的数据类型,我们可以指定为,,等。相当于把某个具体的类型泛化为一般的类型,所以称为泛型。类比方法的参数的概念,我们可以把,称为类型形参,将称为类型实参,有助于我们理解泛型;当我们在类或接口中定义某个成员时,该成员的相关类型是不确定的,而这个类型需要在使用这个类或接口时才可以确定,那么我们可以使用泛型。原创 2024-02-22 14:06:07 · 963 阅读 · 0 评论 -
Day15-集合-迭代器-课后练习-参考答案
(1)用Comparable接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。 2、在测试类中,创建两个不同的坐标类对象,分别指定T类型为String和Double,并为x,y赋值,打印对象。 1、声明泛型方法,可以给任意对象数组按照元素的自然排序实现从小到大排序,用冒泡排序实现。 2、声明泛型方法,可以给任意对象数组按照指定的比较器实现从小到大排序,用冒泡排序实现。 1、声明泛型方法,可以接收一个任意引用类型的数组,并反转数组中的所有元素。原创 2024-02-22 13:58:45 · 961 阅读 · 0 评论 -
Day15_集合与迭代器(Collection,Iterator迭代器,List接口,Set接口)
接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。List的常用实现类有:ArrayList、Vector、LinkedList、Stack等。List集合所有的元素是以一种线性方式进行存储的它是一个元素存取有序的集合。即元素的存入顺序和取出顺序有保证。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。集合中可以有重复的元素List集合类中元素有序、且可重复。原创 2024-02-22 13:55:54 · 884 阅读 · 0 评论 -
Day14-常见API(包装类,Math,BigInteger,RoundingModel,BigDecimal,Random,日期时间API,System类,Arrays数组工具类)
第三次引入的API是成功的,并且java 8中引入的java.time API 已经纠正了过去的缺陷,将来很长一段时间内它都会为我们服务。Java提供了两个类型系统:基本类型与引用类型。double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。原创 2024-02-22 11:56:02 · 853 阅读 · 0 评论 -
day13_String字符串的使用-课后练习 - 参考答案
案例:有一个字符串String abc = “342567891”,请写程序将字符串abc进行升序,可以使用JDK API中的现有的功能方法。案例:已知字符串String str = “1.hello2.world3.java4.string”;如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。键盘录入QQ号码,验证格式的正确性。替换某字符串中的某字符串。原创 2024-02-22 11:45:41 · 943 阅读 · 0 评论 -
Day13-String字符串的使用
Java语法层面:长度为0的字符串长度为0的字符串,例如:String str = “”;null值,例如:String str = null;只包含空白字符的字符串,例如:" "等[abc]ab或c(简单类)[^abc]:任何字符,除了ab或c(否定)[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围):任何字符(与行结束符可能匹配也可能不匹配)\d[0-9]\D:非数字:[^0-9]\s\S[^\s]\w\W[^\w]原创 2024-02-22 11:36:20 · 426 阅读 · 0 评论 -
day12_异常处理语句-课后练习 - 参考答案
在setLifeValue(int lifeValue)方法中,首先判断,如果 lifeValue为负数,就抛出NoLifeValueException,异常信息为:生命值不能为负数:xx;调用setLifeValue(int lifeValue)方法,传入一个正数,运行程序。调用setLifeValue(int lifeValue)方法,传入一个负数,运行程序。 在一款角色扮演游戏中,每一个人都会有名字和生命值,角色的生命值不能为负数。②在有参构造中,需要调用父类的有参构造,把异常信息传入。原创 2024-02-22 11:26:01 · 860 阅读 · 0 评论 -
Day12-异常处理语句
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。异常的出现就是为了记录程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止的情况。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。异常出现的目的是为了保证程序的健壮性。代码出现问题时,曝出异常,程序员解决这些异常以后再继续向下执行。原创 2024-02-22 11:20:41 · 926 阅读 · 0 评论 -
day11_内部类&代码块&枚举&课后练习 - 参考答案
2、在com.atguigu.test16包中声明Test16类,并在main中创建每一个类的对象,并为属性赋值,并调用它们的getInfo()显示信息。1、在com.atguigu.test16包中声明员工类、程序员类、设计师类、架构师类,要求:属性私有化,无参有参构造,get/set,getInfo方法(考虑重写)考核知识点:类初始化,局部变量与类变量,自增自减。员工类属性:编号、姓名、年龄、薪资。考核知识点:类初始化与实例初始化。知识点:继承、属性同名问题。知识点:实例初始化、构造器。原创 2024-02-22 11:18:15 · 375 阅读 · 0 评论 -
Day11-内部类&代码块&枚举
其实严格的讲(在James Gosling等人编著的《The Java Language Specification》)静态内部类不是内部类,而是类似于C++的嵌套类的概念,外部类仅仅是静态内部类的一种命名空间的限定名形式而已。局部内部类的使用和成员内部类的使用基本一致,只是局部内部类定义在外部类的方法中,就像局部变量一样,并不是外部类的成员。当一个类的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,不在其他地方单独使用,那么整个内部的完整结构最好使用内部类。原创 2024-02-22 11:08:09 · 973 阅读 · 0 评论 -
Day10_面向对象-抽象类-接口-课后练习-参考答案
【代码】Day10_面向对象-抽象类-接口-课后练习-参考答案。原创 2024-02-22 11:05:08 · 494 阅读 · 0 评论 -
Day10-面向对象-抽象类和接口
接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。接口的定义,它与定义类方式相似,但是使用interface关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。引用数据类型:数组,类,接口。[修饰符】 interface 接口名{//接口的成员列表:// 静态常量// 抽象方法。原创 2024-02-22 11:02:56 · 814 阅读 · 0 评论 -
day09_面向对象-多态-课后练习 - 参考答案
考核知识点:实例初始化方法,属性与多态无关。考核知识点:多态,重写,实例初始化过程。考核知识点:多态、重载、重写。考核知识点:多态、重载、重写。考核知识点:属性与多态无关。考核知识点:属性与多态无关。原创 2024-02-22 11:00:01 · 469 阅读 · 0 评论 -
Day09-面向对象-多态
注意:对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个元素对象,如果不创建,数组的元素的默认值就是null,所以很容易出现空指针异常NullPointerException。学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。实际上,多态在我们程序中是大量存在的,因为有了多态的存在,才使得Java语言变得更加的灵活以扩展,实现了低耦合高内聚的编码思想。实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展性与便利。原创 2024-02-22 10:55:15 · 1034 阅读 · 0 评论 -
day08_面向对象-继承-课后练习 - 参考答案
1、在com.atguigu.test08包中声明图形Graphic、圆Circle、矩形Rectangle类、三角形Triangle类。 在主方法中,创建1个圆、1个矩形、1个三角形对象,放到数组中,遍历显示,然后排序后再遍历显示。 1、在com.atguigu.test07包中声明员工类、程序员类、设计师类、架构师类, 在主方法中,创建1个圆、1个矩形、1个三角形对象,并分别调用(1)、(2)方法进行测试。 2、声明测试类Test06,在测试类中创建两个三角形对象,调用以上方法进行测试。原创 2024-02-22 10:51:47 · 898 阅读 · 0 评论 -
Day08-面向对象-继承
因为Java的引用数据类型的变量中存储的实际上时对象的内存地址,但是Java对程序员隐藏内存地址信息,所以不能直接将内存地址显示出来,所以当你打印对象时,JVM帮你调用了对象的toString()。上述代码中,我们发现猫类和狗类具有很多共同的特征和行为,如果把这些相同的特征和行为再次抽象成为一个新的动物类,就可以将这个类定义为猫狗类的父类。对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。类是Java语言中的根类,即所有类的父类。原创 2024-02-22 10:47:27 · 904 阅读 · 0 评论 -
Day07-面向对象-封装课后练习以及参考答案
(2)在测试类的main方法中,创建3个日期对象,一个是你的出生日期,一个是来尚硅谷的日期,一个是毕业的日期,并打印显示。(2)在测试类的main方法中创建三角形对象,将三角形的三条边设置为3,4,5,调用方法测试。(2)在测试类的main方法中,创建2个员工对象,并为属性赋值,并打印两个员工的信息。(2)在测试类的main方法中,创建MyDate对象,赋值为当天日期值,调用方法测试。(3)在测试类的main方法中,创建你们家庭成员的几个对象,并打印信息。(1)声明一个日期类MyDate,原创 2024-02-22 10:42:00 · 860 阅读 · 0 评论 -
Day07-面向对象-封装
Java是一种计算机程序设计语言。所有的计算机程序一直都是围绕着两件事在进行的,程序设计就是用某种语言编写代码来完成这两件事,所以程序设计语言又称为编程语言(编写程序的语言)。如何表示和存储数据基本数据类型的常量和变量:表示和存储一个个独立的数据对象:表示和存储与某个具体事物相关的多个数据(例如:某个学生的姓名、年龄、联系方式等)数据结构:表示和存储一组对象,数据结构有数组、链表、栈、队列、散列表、二叉树、堆…基于这些数据都有什么操作行为,其实就是实现什么功能数据的输入和输出。原创 2024-02-22 10:37:27 · 866 阅读 · 0 评论 -
day06_二维数组和方法课后练习以及参考答案
1,其中n是大于等于5并且小于10000的整数,例如:f(5) = 5 + 4 + 3 + 2 + 1,f(10) = 10 + 9 + 8 + 7+ 6 + 5 + 4 + 3 + 2 + 1,请用递归的方式完成方法long f( int n)的方法体。1、static int binarySearch(int[] arr, int value):使用二分查找法在arr数组中查找value的下标,如果value不存在,就返回-1,如果数组arr不是有序的,结果将不一定正确。原创 2024-02-22 10:32:27 · 804 阅读 · 0 评论 -
Day06-二维数组和方法
1 二维数组(理解)。1.1 二维数组的声明与初始化。1.2 二维数组的遍历。1.3 二维数组的内存图分析。1.4 数组操作的常见异常。1.5 二维数组练习。2 方法。2.1 什么是方法。2.2 声明方法。2.3 方法的调用。2.4 方法的形参。2.5 方法的返回值。2.6 方法的内存调用。3 方法的重载。4 可变参数。5 方法的值传递。5.1 基本类型数据的值:传递的是值的副本。5.2 数组作为参数:传递的是地址值。6 递归。6.1 递归的应用。6.2 菲波那切数列原创 2024-02-22 10:29:36 · 975 阅读 · 0 评论 -
Day05-数组课后练习2以及参考答案
巩固题。1、随机产生偶数并排序。2、判断单词是否是回文单词。3、查找满分学员。4、查字。5、找出出现奇数次的数。拔高题。6、找数组平衡数。7、左奇右偶。8、查找数组中个数过半的数字。9、求数组中元素的最短距离。原创 2024-02-22 10:22:32 · 845 阅读 · 0 评论 -
Day05-数组课后练习1以及参考答案
巩固题(努力)。1、月份。2、打印扑克牌。3、正序和逆序输出26个英文字母。4、随机生成一组验证码。5、判断数组中的元素值是否对称。拔高题(自愿)。6、打鱼还是晒网。7、模拟大乐透。8、统计字符出现次数。9、统计低于平均分的学生人数。原创 2024-02-22 10:19:36 · 934 阅读 · 0 评论 -
Day05_数组(为什么需要数组,数组的声明与初始化,数组元素的访问,数组的遍历,数组的基础算法)
1为什么需要数组。2数组的概述。3 数组的声明与初始化。3.1 数组的声明。3.2 数组的初始化。4 数组元素的访问。5 数组的遍历。4.4.1普通遍历。4.4.2增强for遍历。6 数组元素的默认值。7 数组内存图。7.1 内存概述。7.2 Java虚拟机的内存划分。7.3 数组内存图分析。8 数组的基础算法。8.1 统计。8.2 查找指定元素。8.3 查找最值及其位置。8.4 排序之冒泡排序。8.5 数组的反转。8.6 数组的直接选择排序原创 2024-02-22 09:53:39 · 964 阅读 · 0 评论 -
Day04-课后练习以及参考答案(流程控制语句_循环结构)
巩固题。1、5个一行输出1-100之间的偶数。2、趣味折纸。3、实现输出如下任一个数字三角形。4、计算这一天是这一年的第几天。拔高题。1、计算这一天是这一年的第几天。2、计算这一天是在打鱼还是晒网。3、打印『X』对称图形。4、打印空心菱形原创 2024-02-22 09:42:23 · 796 阅读 · 0 评论 -
Day04-流程控制语句_循环结构(while,do...while,关键字continue,关键字break,循环嵌套)
1 while循环。2 do...while循环。4 循环语句的区别。5 关键字continue。6 关键字break。7 循环嵌套。案例1:打印5行直角三角形。案例2:break结束当层循环。原创 2024-02-22 09:35:38 · 980 阅读 · 0 评论 -
Day03-课后练习-参考答案(流程控制_分支结构)(判断年、月、日是否合法,判断打鱼还是晒网,判断星座)
巩固题。1、从键盘输入一个整数,判断它是否是5的倍数。2、从键盘输入一个字符,判断字符类型。3、计算折扣后金额。4、输出月份对应的英语单词。5、计算今天是星期几简答题。拔高题(自愿)。6、判断年、月、日是否合法。7、判断打鱼还是晒网。8、判断星座原创 2024-02-22 09:23:19 · 864 阅读 · 0 评论 -
Day03-课后练习(流程控制_分支结构)(判断年、月、日是否合法,判断打鱼还是晒网,判断星座)
巩固题1、从键盘输入一个整数,判断它是否是5的倍数。2、从键盘输入一个字符,判断字符类型。3、计算折扣后金额。4、输出月份对应的英语单词。5、计算今天是星期几简答题。拔高题(自愿)。6、判断年、月、日是否合法。7、判断打鱼还是晒网8、判断星座原创 2024-02-22 09:17:08 · 939 阅读 · 0 评论 -
Day03-流程控制_分支结构
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,switch语句执行终止。如果根据进入分支的条件是几个固定的常量值,这时使用if和switch都可以,如果条件选项比较多时,适合使用switch语句(效率高)。以上程序是个求和的程序,我想在运行程序的时候,根据实际的输入的两个数,进行求和,就跟计算器一样,任意给两个数,计算得出结果,如何做?闰年2月份29天,平年28天。原创 2024-02-20 18:08:51 · 873 阅读 · 0 评论 -
IDEA连接database数据库
将提前准备好的mysql驱动jar包,放到Idea配置路径中:C:\Users\Irene.IntelliJIdea2019.2\config\jdbc-drivers。解决办法:手动增加高级参数 serverTimezone=Asia/Shanghai。如果没有配置驱动,将会报如下错误。原创 2024-02-19 15:23:08 · 2545 阅读 · 0 评论 -
IDEA中创建web项目(配置tomcat,tomcat启动报程序包javax.servlet.http不存在,tomcat控制台乱码问题)
3、在第二步的Startup/Connection页签的Run和Debug添加一个key为JAVA_TOOL_OPTIONS, value为-Dfile.encoding=UTF-8的环境变量。2、点击Run菜单的 Edit Configurations,在tomcat配置中的 VM option中添加 “-Dfile.encoding=UTF-8”1、 点击Help => Edit custom VM Options,在最后面添加 “-Dfile.encoding=UTF-8”原创 2024-02-19 15:03:46 · 1456 阅读 · 0 评论