随笔分类 -  复习Java基础

考研完了之后,很多Java的基础知识都忘了差不多需要复习记录一下,养成写博客的好习惯
摘要:信号灯解决同步问题 我尽量注释了代码,可以很容易理解了。 阅读全文
posted @ 2020-04-18 00:35 li33的博客 阅读(1088) 评论(0) 推荐(1)
摘要:线程池 主要是为了提升性能,线程重复利用。每个线程都创建十分消耗性能。线程池就像共享单车。 阅读全文
posted @ 2020-04-17 22:06 li33的博客 阅读(187) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList是线程安全的集合。本身就是安全的,同时只能被一个进程所访问。 属于JUC并发编程里面的内容。 阅读全文
posted @ 2020-04-17 13:10 li33的博客 阅读(420) 评论(0) 推荐(0)
摘要:上锁,根据操作系统所说的原则,对共享变量上锁,对临界区上锁。谁访问临界资源?就给谁上锁 同步监视器,它上锁的对象。 1.用关键字给方法上锁 2.用synchronized代码块上锁 默认上锁对象:this,指向自身。就是调用这个方法的对象,给他上锁。 安全的买票(给方法上锁) 阅读全文
posted @ 2020-04-17 12:56 li33的博客 阅读(132) 评论(0) 推荐(1)
摘要:线程同步 队列加锁synchronized是实现同步的必要条件。 优先级低的拿到锁,高的没拿到。性能倒置,效率极差 不安全的买票代码实现 阅读全文
posted @ 2020-04-17 10:33 li33的博客 阅读(285) 评论(0) 推荐(0)
摘要:守护线程 线程分为用户线程和守护线程 虚拟机必须确保用户线程的结束 虚拟机不必等待守护线程的结束 垃圾回收,监控回收等就是一个守护线程。(相当于学校的门卫,他必须确保学校里面没人了才会关门) 阅读全文
posted @ 2020-04-17 09:42 li33的博客 阅读(281) 评论(0) 推荐(0)
摘要:线程 停止线程 比较好的方法 1.不要使用JDK已经废弃的stop()等方法。 2.设置外部标志位,控制线程运行,理论上是让他自己停止 3.让他自己停下来 阅读全文
posted @ 2020-04-16 23:23 li33的博客 阅读(107) 评论(0) 推荐(1)
摘要:1.实现Runnable,Callable Callable接口里定义的方法有返回值,可以声明抛出异常。 继承Callable接口实现线程 因此可以将实现Runnable接口和实现Callable接口归为一种方式。这种方式与继承Thread方式之间的主要差别如下。 1.采用实现Runnable、Ca 阅读全文
posted @ 2020-04-16 20:33 li33的博客 阅读(532) 评论(0) 推荐(0)
摘要:lambda表达式(jdk8特性) 1.为什么要用lambda表达式 原因:因为我们有时候需要用到很多类,但是,这些类我们只用一次或者两次,所以我们用匿名内部类,但是匿名内部类多了还是很麻烦,所以用lambda表达式再次简化这种简单类 让代码更加简洁,避免很多无意义的语句 函数式接口的定义? lam 阅读全文
posted @ 2020-04-16 19:51 li33的博客 阅读(979) 评论(0) 推荐(0)
摘要:自定义异常 异常使用的经验 合理的使用逻辑去避免异常,同时辅助try catch处理 (稳如老狗) 多个catch使用的时候,最末尾加上catch Exception防止遗漏 (赶尽杀绝) 不确定是否会产生异常的代码,也用try catch (宁杀错,不放过) 尽量去处理异常,而不是甩锅给别人。 ( 阅读全文
posted @ 2020-04-16 15:52 li33的博客 阅读(121) 评论(0) 推荐(1)
摘要:异常 异常分类 Throwable是祖宗,Error和Exception都是它的子类。 Error是很严重的问题,一旦出现一定要解决,常见的是IOError,StackOverflowError Exception是无法避免的,但是我们可以再可能发生异常的地方捕获异常 异常被捕获了之后程序还能继续运 阅读全文
posted @ 2020-04-16 14:21 li33的博客 阅读(151) 评论(0) 推荐(0)
摘要:内部类 内部类的使用 实例化内部类 1. 成员内部类 ,一个类定义在另一个类中 2. 静态内部类 ,一个static类定义在另一个类中 由于static关键字的特性,所以他在外部类实例化过程就可用了,所以不能再里面加普通的变量 3. 局部内部类 (定义在方法内部的类,具体怎么用后面用到再说) 方法里 阅读全文
posted @ 2020-04-16 13:46 li33的博客 阅读(227) 评论(0) 推荐(0)
摘要:面向对象的三大特性 1.封装性(属性私有,get,set) | 提高了程序的安全性,保护了数据 | | | | 隐藏了代码的实现细节 | | 统一了接口 | | 系统的可维护性增加了 | set get方法可以设置安全性检测,来设置正确的数据 2.继承性 1. java中所有类都继承(间接)Obje 阅读全文
posted @ 2020-04-16 01:18 li33的博客 阅读(267) 评论(0) 推荐(1)
摘要:面向对象的程序设计 1.面向对象 核心:以类的方式组织代码,以对象的方式封装数据 比喻:也就是说类是没有数据的,给了数据之后的类就是对象 | 封装 | | | | 继承 | | 多态 | 2.方法 a.一个方法只有一个返回值,只有一个return 语句。 b.比较静态方法和非静态方法 c.值传递和引 阅读全文
posted @ 2020-04-16 00:18 li33的博客 阅读(142) 评论(0) 推荐(0)
摘要:数组的使用 1.数组的初始化 数组初始化的三种方式 | 静态初始化:创建时就直接初始化所有元素 | | | | 动态初始化:先声明数组,然后用到哪个再初始化哪个 | | 默认初始化:每种不同类型的数组,他都有默认的数据类型,同理数组也有初始化的类型。 | java public static voi 阅读全文
posted @ 2020-04-15 19:34 li33的博客 阅读(127) 评论(0) 推荐(0)
摘要:方法就是完成功能一个语句集合体 使用方法的 原则 :方法的原子性,一个方法只实现一个功能。 方法的重载 1.函数名必须相同 2.形参列表必须不同(可以是个数不同,类型不同,不然完全一样) 3.返回值可以相同也可以不相同 命令行传参 通过命令行可以将参数传到String args[],可以进行一些操作 阅读全文
posted @ 2020-04-15 14:10 li33的博客 阅读(156) 评论(0) 推荐(0)
摘要:1.什么是包机制? 包(package)其实本质上就是一个文件夹,使用包是为了让相同类名的两个类可以使用,也就是操作系统中的文件夹,用来解决重名并且让相同的功能类放在同一个包,使开发更加有条理。 注意:一般使用公司网址倒置名作为包名 com.baidu.Dao com.baidu.Util等。 2. 阅读全文
posted @ 2020-04-15 09:57 li33的博客 阅读(967) 评论(0) 推荐(0)
摘要:int a = 2; int b = a++;//等价于int b = a,a=a+1; int c = 2; int d =++c;//等价于c=c+1,int d = c; System.out.println(b);//结果=2 System.out.println(d);//结果=3 上面是 阅读全文
posted @ 2020-04-15 01:39 li33的博客 阅读(127) 评论(0) 推荐(0)
摘要:类变量:(加static 关键词的变量) static double salary = 2500;//从属于这个类,和这个类一起存在消失 实例变量:从属于这个类的对象,大类里面的变量,就是变量的属性(默认值为0,布尔值默认为false,除了基本类型,其他类型的默认值都是null) student.a 阅读全文
posted @ 2020-04-15 01:00 li33的博客 阅读(115) 评论(0) 推荐(0)
摘要:问:银行用什么数据类型来表示余额?float还是double? 都不是!!下面说明为什么都不可以呢? public static void main(String[] args) { //浮点数他都是近似的,你看着一样的东西,他看来就不一样 float f_a = 0.1f; double d_a 阅读全文
posted @ 2020-04-14 13:39 li33的博客 阅读(172) 评论(0) 推荐(0)