Java基础
暗号(Live)
“你喜欢什么,你追随什么,你就是什么。”
展开
-
使用stream流来对结果进行计算
返回由该流的元素组成的流,根据提供的 Comparator进行排序。返回由此流的元素组成的流,截短长度不能超过 maxSize。返回由给定函数应用于此流的元素的结果组成的流。返回由与此给定谓词匹配的此流的元素组成的流。返回由此流的元素组成的流,根据自然顺序排序。:一分钟内完成此题,只能用一行代码实现!2、年龄必须大于23岁。3、用户名转为大写字母。4、用户名字母倒着排序。1、ID 必须是偶数。......原创 2022-08-27 15:11:40 · 437 阅读 · 0 评论 -
java面试题
instanceof关键字作用是判断当前对象是不是某个类或者他的子类的对象严格来说他是Java中的一个双目运算符用法如下:Student student =new Student();boolen a = student instanceof Person;判断学生对象是不是人这个类或者他的子类的实例答案是true注意instanceof后面也可以带接口表示是否是当前接口的实现类的实例、具体的判断分为两步:一是编译期:首先看有没有出现编译错误...原创 2022-04-25 14:48:27 · 359 阅读 · 1 评论 -
字符串类型的日期解析
@Test public void test() { String birthday = "2022-03-23T16:00:00.000Z"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { //字符串转date Date time = simpleDateFormat.parse(birth..原创 2022-04-19 21:15:13 · 2087 阅读 · 0 评论 -
面向对象及jvm的内存分配
前言:面向过程的编程方式(c语言)采用自顶而下,逐层细化的方式来编写程序,在历史中得到了广泛的应用。具体的写法,在一个项目中创建多个函数,多个函数之间相互调用,通过函数的划分可以细分出多个模块。这种方式不利于设计大型的项目,大量的函数不容易管理,函数间的调用变得非常的复杂容易出错,模块的划分越来越不清晰。一、面向对象的编程方式:C语言是面向过程的,经过改进后出现了c++语言,c++是第一个面向对象的开发语言。java是参照了c++语言的实现方式来设计自身的,也做了一些改进比如不允许多继承原创 2022-04-16 11:35:56 · 120 阅读 · 0 评论 -
数组知识以及实参和形参改变值时的区别
目录一、什么是数组二、创建数组1.创建一个未指定任何元素的数组2.创建指定元素的数组三、可以理解为方法中引用类型的形式参数在做赋值操作时,实际参数 就会发生改变吗?一、什么是数组数组是由多个在内存中连续存放的元素所组成的数据,每个元素都有唯一的索引号,所有元素的数据类型是相同的,数组一旦被创建长度就不能变。在程序中使用数组时,需要定义一个数组变量对数组进行引用1、对于基本类型的变量,变量中存放的就是数据的值(100)。2、对于数组的变量,他存放的是数组在内存中的首原创 2022-04-15 16:47:37 · 986 阅读 · 0 评论 -
java前言
request域中的数据传输多个servlet直接传数据用请求转发 (重定向不能用来传数据)一、IT前沿技术1、云计算,基于大量计算机及网络连接中的集中或分布式的计算和存储。2、大数据,针对p级以上的数据处理及存储技术。3、人工智能,利用计算机的算术和逻辑运算能力模拟人的智力的行为。二、了解Java的基本作用1、它是一门编程语言,它具有基本的语法要求,提供了53个关键字,它自带虚拟机(JVM),同时提供了大量的api(应用编程接口)。2、同时它是一种技术栈,具有可供Java项原创 2022-04-15 16:04:56 · 758 阅读 · 0 评论 -
i++与++i
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。而 a = ++i,相当于 i=i+1; a = i; (先i = i + 1,再使用i的值)而 a = i++,相当于 a = i; i=i+1; (先使用i的值,再i = i + 1)&&如果左边判断为假右边就不用执行(恒为假)同理 || 如果左边为真右边就不用执行(恒为真)上述例子没有进入if语句直接跳出 且++j没有执行...原创 2021-10-13 16:46:29 · 155 阅读 · 0 评论 -
java集合的三种遍历方式以及各自优缺点分析
1、Iterator接口Iterator是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。提供的三种方法:boolean hasNext():返回集合里的下一个元素。Object next():返回集合里下一个元素。void remove();删除集合里上一次next方法返回的元素。简单实例:[java] view plain copypublic class test1{public static void main(Str转载 2021-10-08 20:34:51 · 571 阅读 · 1 评论 -
为什么不允许使用Java静态构造函数?
不允许使用 Java 静态构造函数,但是为什么呢?在深入探讨不允许使用静态构造函数的原因之前,让我们看看如果要使 构造函数静态化 会发生什么。Java 静态构造函数假设我们有一个定义为的类:public class Data { private int id; public static Data() {}}如果您尝试编译此类,则会在 Data 类型的构造函数中收到一条错误消息,作为非法修饰符。****仅允许公开,受保护和私有。静态属于类,构造函数属于对象我们知道原创 2021-10-08 11:05:43 · 220 阅读 · 0 评论 -
Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)
Java创建数组的三种方法import java.util.Arrays; public class Sum { public static void main(String[] args){ int[] vec = new int[]{1, 5, 3};// 第一种方法 int[] vec = { 37, 47, 23 };// 第二种方法 int[] vec = new int[3]; for(i.原创 2021-10-08 09:31:11 · 1790 阅读 · 0 评论 -
== 和 equals() 区别 以及那些类重写了equals方法?
像String、Date、File、包装类等都【重写】了Object类中的equals()方法。重写以后,比较的不是* 两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同一、回顾 == 的使用:* == :运算符* 1. 可以使用在基本数据类型变量和引用数据类型变量中* 2. 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)* 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体* 补充: =原创 2021-09-19 09:04:03 · 739 阅读 · 0 评论 -
java基本类型堆 Java基本类型的内存分配在栈还是堆?
首先:字符串常量池也是属于堆空间的我们都知道在Java里面new出来的对象都是在堆上分配空间存储的,但是针对基本类型却有所区别,基本类型可以分配在栈上,也可以分配在堆上,这是为什么?在这之前,我们先看下Java的基本类型8种分别是:byte =>8bitshort => 16bitint => 32bitlong =>64bitfolat => 单精度32位double => 双精度64位boolean => 注意oracle转载 2021-09-19 08:47:40 · 348 阅读 · 0 评论 -
8种基本数据类型的包装类中那些拥有常量池技术?
基本数据类型和对应的包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 其中double 和float两种浮点型包装类不具有常量池技术。什么是常量池技术?例如:Integer i1 = 40;Java在编译的时候会直接将代..原创 2021-09-19 08:15:24 · 461 阅读 · 0 评论 -
String练习题 / String常用方法 / 正则表达式
思考题1String str=new String("abc"); 这行代码创建了几个String对象?答:1个或2个。(1)首先在堆中(不是常量池)开辟一个内存空间,并让str引用指向该空间(2)在字符串常量池中查看,是否存在内容为"abc"字符串对象(3)若存在,则将new出来的字符串对象与字符串常量池中的对象联系起来(1个)(4)若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象,并将堆中的对象与之联系起来(2个)思考题2String str="abc"; 我们知道原创 2021-09-17 21:02:14 · 290 阅读 · 0 评论 -
关于在while循环里面和外面造对象的区别
public class MyTest4 { public static void main(String[] args) { System.out.println("请输入一个整数:"); while (true){ Scanner sc = new Scanner(System.in); if (sc.hasNextInt()){ int i = sc.nextInt(); Sys.原创 2021-09-17 20:32:52 · 440 阅读 · 0 评论 -
如何将Foreach循环应用于String中的每个字符?
public class MyTest4 { public static void main(String[] args) { String str = "七月的风,八月的雨"; char[] chars = str.toCharArray(); for (char s :chars ) { System.out.println(s); } }}先将其转换成char类型的.原创 2021-09-17 21:36:56 · 1223 阅读 · 0 评论 -
Lambda表达式
对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。λ是希腊字母表中排序第十一位的字母,英语名称为Lambda,Lambda表达式其实质属于函数式编程的概念。(params)-> expression [ 表达式 ](params)-> statement [ 语句 ](params)-> { statements }为什么要用Lambda表达式?避免匿名内部类定义过多去掉了一堆没有意义的代码,只留下核心的逻辑,看起来更简洁案例演示1外部类、成员内部类原创 2021-09-17 08:27:34 · 98 阅读 · 0 评论 -
匿名内部类
public class MyTest { public static void main(String[] args) { //匿名内部类,本质上是一个对象,是谁的对象,是实现了该接口或继承了该抽象类的子类对象 new AA(){ @Override public void show() { System.out.println("重写了show方法"); }.原创 2021-09-16 23:30:09 · 46 阅读 · 0 评论 -
接口中的成员变量和其实现类的关系
接口的成员变量还是属于接口的。用实现类可以调用接口成员变量是因为java的上溯机制,一个类调用它没有的成员变量或方法时,java会自动到这个类的父类和接口里找,如果没有,就继续向上找,直到找到为止,如果最后找不到就会报错。你用接口的实现类调用接口的成员变量时,因为这个类里面没有,所以java会去它的父类和接口里面找,在接口里找到了,就用接口调用这个成员变量。也就是说,表面上好像是实现类调用了接口的成员变量,实际上还是接口本身调用的。这只是一种错觉,你还可以创建一个这个类的对象,然后用对象名调用接口的成员变量原创 2021-09-16 23:04:21 · 1096 阅读 · 0 评论 -
关于静态方法能否被继承和重写
一个指向子类对象的父类引用来调用父子同名的静态方法时,只会调用父类的静态方法。静态方法是属于当前类的多态情况下,调用父子同名的静态方法,只会调用父类的!!非多态情况下,子类调用父子同名的静态方法,是调用子类的,但这不是重写,而是因为这种情况父类的静态方法对子类隐藏了结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏....原创 2021-09-16 11:16:52 · 345 阅读 · 0 评论 -
子类继承同名变量是覆盖还是在堆内存中重新开辟空间?
可以看出成员变量相同时,子类调用的是自己内部的成员变量。而且父类的成员变量没有变,说明子类的和父类的都分配了一个内存空间,否则父类的输出和子类的值应该相同。独立的内存空间但是子类的覆盖了父类的成员变量。准确的说是父类的隐藏了,此时可以用super来调用。...原创 2021-09-16 08:49:57 · 247 阅读 · 0 评论 -
Override(方法重写)和Overload(方法重载)的区别?
两者不同主要体现在:目的overload用于增加程序的可读性(做法不同,但是做的是同一事情)。 override用于提供其父类已经提供的方法的特定实现。范围overload 在相同的类范围内执行。 override发生在两个具有继承关系的类中。参数列表overload参数列表必须不同。 override参数列表必须相同。返回值类型overload中可以相同或不同,但是光是返回值类型不同不构成重载。 override必须是相同的。...原创 2021-09-16 09:30:42 · 85 阅读 · 0 评论 -
多态的优点和弊端
1.优点提高了代码的维护性(继承保证) 提高了代码的扩展性(由多态保证)2.弊端不能访问子类特有的成员变量和成员方法解决方法:把父类的引用强制转换为子类的引用。(向下转型)案例演示public class MyTest { public static void main(String[] args) { Fu fu = new Zi(); System.out.println(fu.a); //System.out.printl原创 2021-09-16 11:37:22 · 1856 阅读 · 0 评论 -
继承中方法调用 方法(此方法也会优先去子类中调用重写的方法)
思考题:写出结果class A { public void show() { show2(); } public void show2() { System.out.println("我"); }}class B extends A { public void show2() { System.out.println("爱"); }}class C extends B { public void show() { super.show(); }原创 2021-09-16 11:00:44 · 199 阅读 · 0 评论 -
Java继承中 私有属性的利用
最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样原创 2021-09-15 23:23:28 · 129 阅读 · 0 评论