java基础
JAVA基础学习与遇到的问题
达不溜Q
如果没有奇迹,那就去创造一个!
展开
-
Stream流式处理常见使用
java 8新特性 stream流式处理,提高代码整洁性原创 2022-01-18 15:02:28 · 6567 阅读 · 0 评论 -
Java异常分类
导语:最近在准备春招,所以有计划的在复习java基础知识,整理了一些笔记分享出来。1.异常的层次机构:所有异常的父类是Throwable,它有两个子类,分别是Error和Exception。2.Error:表示系统错误,通常不能处理和恢复。比如StackOverFlowError或者OutOfMemoryError,出了问题只能结束程序。3.Exception :表示程序可以处理的异常。Exception又分为Checed Exception(被检查异常)和Runtime Excep原创 2021-03-27 00:04:50 · 2181 阅读 · 0 评论 -
Java类的初始化顺序
导语:Q:最近我的一个java老师问我你java学的咋样?A: 我说还行吧。Q:老师说那我出道题你做做,考考你?A:我说行(于是乎...就有了这篇文章,题目在最后,有兴趣的话可以做做)Java类的初始化顺序1.先从上向下初始化静态数据(静态初始化块、静态初始化语句 )2.遇到 new从上向下执行初始化非静态数据(非静态成员的初始化),最后执行对应的这个new的构造函数3.下面还有静态初始化的接着初始化,直到所有静态的都初始化完,类加载完4.执行main方法,有new...原创 2021-03-26 11:02:35 · 214 阅读 · 0 评论 -
Static关键字用法与注意事项
导语:最近在准备春招,所以有计划的在复习java基础知识,整理了一些笔记分享出来1.有什么作用:在不创建对象的情况下调用方法或使用属性,以及提升程序性能。2.static可以修饰 变量、方法、代码块、内部类:修饰的 变量 叫做静态变量,可以通过类名直接调用。静态变量是被该类的所有对象共享,在内存中只有一个副本,在类加载时初始化。 修饰的 方法 叫做静态方法,可以通过类名直接调用,比如工具类中大部分方法都是通过类名调用的; 修饰的 代码块 也叫静态代码块,静态代码块内的语句只会在类加载时执行原创 2021-03-26 10:44:39 · 272 阅读 · 0 评论 -
Java的值传递(面试常客)
导语:最近的多次面试中,面试官问到Java是值传递还是引用传递?这种问题中小公司几乎必面,这里简单记录一下。值传递:传递的参数是值得拷贝。即使在函数中被改动也只是改动的副本。引用传递:传递的参数是参数的地址,类似C++中的指针,指向参数对应的内存地址。在方法中改动对应地址中的值会影响到任何指向该地址区域的变量。Java中是值传递,无论是基本数据类型还是对象。如果方法传递的参数是基本类型:传递的是基本类型变量的拷贝(就是一个数值) 如果方法传递的参数是引用类型:传递的是引用类型变量在堆中地址值的原创 2021-03-26 10:41:17 · 182 阅读 · 0 评论 -
【Java面试题】一个类实现了多个接口中的重名默认方法,调用时会使用哪个?
导语:最近的一次面试中,面试官问到一个类实现了多个接口中的重名默认方法,调用时会使用哪个?这种问题之前我还真没特别关注,这里简单记录一下。首先判断本类是否重写了默认方法,如果重写了,就直接调用本类的方法。如果本类没重写,那么判断其父类是否重写了,本类和父类中方法优先级最高。 如果以上无法判断,那么子接口的优先级更高。例如类C继承了接口B,接口B继承了接口A,在接口A和B中都实现了一个重名默认方法,那么,B的优先级更高。 如果继承的多个接口是同级的,比如接口A和接口B没有关系,那么就得在本类中显示声明原创 2021-03-26 10:29:00 · 655 阅读 · 0 评论 -
Java的三大特性
导语:最近在准备春招,所以有计划的在复习java基础知识,整理了一些笔记分享出来1.三大特性:封装:把对象中的属性私有化,不允许外部直接访问对象内部的属性。但可以提供被外部访问的方法 继承:是在已有类的基础上建立新类的特性;继承使得使得代码复用非常容易。新的类可以调用父类的属性、方法,也可以有自己的属性、方法。 多态:一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须由程序运行期间才能决定,这就是多态性2.三大特性各自的优点:1)封装优点:.原创 2021-03-26 10:18:12 · 1244 阅读 · 0 评论 -
【Java面试题】怎么理解面向对象编程
导语:最近的一次面试中,面试官问到如何理解java面向对象编程?这种问题千人千语,这里简单记录一下我的看法面向过程:就是遇到一个问题时,将解决问题的方法拆分成一个个函数和数据,然后按一定的顺序执行完。这是一个具体的、流程化的过程。比如洗衣服的流程,先加洗衣粉、再加水、再把衣服扔进洗衣机、洗衣机洗衣、再烘干。 面向对象:就是将解决问题的方法模型化、抽象化成对象。然后给这些对象赋予属性和方法,并让对象来执行这些操作。对于洗衣服的例子,就可以抽象出人和洗衣机两个对象,操作步骤就是人.放洗衣粉()、人.加水(原创 2021-03-26 10:04:25 · 318 阅读 · 0 评论 -
Java代理(浅析)
导语:最近在准备春招,所以有计划的在复习java基础知识,整理了一些笔记分享出来,这篇是关于代理,上一篇是关于反射。Java反射(浅析)1.代理的作用:在不改变原代码的情况下实现增强代码(例如为公司项目的每一个方法前后添加打印日志功能并且不修改源代码)2.静态代理:还以现行打印日志功能为例:我们需要为项目的每一个类编写一个对应的代理类,并且二者实现同一个接口(假设都有)代理对象干的事:通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并在调用前后打印日志。原创 2021-03-26 09:55:12 · 207 阅读 · 0 评论 -
Java反射(浅析)
导语:最近在准备春招,所以有计划的在复习java基础知识,整理了一些笔记分享出来,这篇是关于反射,下一篇是关于代理。1.什么叫反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取类信息以及动态调用对象内容就称为java语言的反射机制2.获取class对象的三种方式:类名.class 对象名.forClass() Class.forName("类的全限定名")3. 反射机制有什么优缺点?原创 2021-03-26 09:46:35 · 227 阅读 · 0 评论 -
final关键字
final关键字修饰常量,常量名大写,不可修改 final关键字修饰方法,不能被重写 final关键字修饰类,不能被继承原创 2021-03-23 22:32:37 · 201 阅读 · 0 评论 -
枚举类型(enum)
用来定义一组指定域的常量值(星期一,星期二,……),每一个常量值都是public static final默认修饰,在类加载时,通过静态代码块来修饰 方便编译器自动检测要比较的值是否在指定域中(因为enum常量自带类型信息) enum是引用类型,java引用类型的数据要用equals比较,但是enum可以用==,因为enum中的每一个常量在 jvm中只有唯一的实例(天然的单例) meun底层就是final class Xxx extends Enum { … },不能被继承,不能new,只能类当中定义原创 2021-03-23 22:31:37 · 718 阅读 · 0 评论 -
String/StringBuffer/StringBuilder
String引用类型,本身也是一个class,底层是字符数组char [] ,比较新的jdk版本底层是byte[] 字符串的不变性,因为底层是private final char[] ,以及没有任何修改字符数组char[]的方法 比较两个字符串的内容用equals,不能用== 字符串操作不改变原字符串内容,而是返回新字符串 Java使用Unicode编码表示String和charString/StringBuffer/StringBuilder它们之间的区别?为什么要引入其它两种.原创 2021-03-23 22:29:41 · 381 阅读 · 0 评论 -
各种编程语言对比
php:脚本级别的语言,性能差,写起来快,适合快速开发。.NET(c#):各方面不输java,但是java进入中国早,一开始不开源,在欧美主流python:主要作用处理数据,搭建一些简单的框架,低难度,简易大数据:属于商业炒作,其实就是大学的建模,属于低端数据处理。核心:建立准确的关系(模型)人工智能:分类:1. 有监督学习(简单): 主调节关系模型系数2. 无监督学习(困难):自动归类,自动建模3. 半监督学习(适中):国内能达到...原创 2020-07-18 11:04:03 · 1239 阅读 · 0 评论 -
Lambda表达式与函数式接口
Lambda表达式(1) 为什么用lambda表达式 : 受java面向对象影响,我们做什么都需要一个对象,但是当我们仅仅需要某个接口中的某个方法时,也要先通过一个类来实现这个接口,再实例化一个对象来调用这个方法。为了简化,我们通过匿名内部类来实现接口,然后还必须重写方法,这些都是重复在做的。而我们仅仅想要传入参数,按照自定义方法体执行而已,所以有了Lambda表达式,仅仅关注入参与方法内容,其他一律不管。(2)格式: () -> {}前面小括号()放的是入参,可以没有,可以有多个,.原创 2021-03-11 22:46:21 · 490 阅读 · 0 评论 -
重写了equals为什么还要重写hashcode?
理解:当我们重写了equals方法,认为两个内容上相等的东西是同一个东西,如果不重写,hashcode根据这两对象物理地址来生成hash值,理论上是不同的,所以存入hashmap不同位置,这与我们认为他们内容相同需要存入hashmap相同位置相悖,所以重写hashcode,会让内容上相同但物理地址不同的两个对象生成一样的hash值,进而达到我们的目的。不重写equals与hashcode有关,重写两者,equals与hashcode就无关...原创 2020-07-23 10:46:55 · 254 阅读 · 0 评论 -
还不知道equals与==的区别?看这篇就够了
一丶equals与重写equals方法1.重点:提供equals方法的目的是为了比较内容的但是有一点:原始的equals方法 是 所有类的父类object的一个方法,java语言设计者并不知道你定义的类的内容是什么,所有默认object的equals方法是比较地址的。你想比较自己定义的两个类的内容是否相等,就得重写equals方法,让他比较内容。Java的一些类库中都重写了equals方法,String、Integer、Date总结:equals方法比较两个引用类型:默认比较地.原创 2020-07-23 10:45:46 · 393 阅读 · 0 评论 -
java按值传递(一个例子彻底理解)
1.规则java调用方法,当方法的参数是基本类型时,传递的是数值java调用方法,当方法的参数是引用类型时,传递的引用对象的地址值2.测试用例:public class Test { public static void main(String[] args) { int a = 10; int b = 20; exchange(...原创 2020-05-08 15:57:41 · 1808 阅读 · 0 评论