![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 60
Dyson~
小小黑
展开
-
java学习笔记(一)--(数据类型与运算符)&(程序逻辑控制与方法定义)&(数组的定义与使用)
1 .Java源文件:*.java,保存原始java代码编译过程:javac 要编译的源文件->.class文件(二进制文件).给JVM阅读的解释过程:java主类名向主方法传递多个参数java启动的主类名 参数1 + 空格 + 参数2 ...编译过程支持中文:javac -encoding UTF-8 主类名.java2..标识符与关键字2 .1 java注释...原创 2018-10-13 17:58:08 · 328 阅读 · 0 评论 -
java设计模式--代理设计模式
代理模式特点:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另外一个子类完成辅助真实业务主题的操作举例:玩游戏--接口 买口红--接口真实主题类:你 真是主题:你代理类:代练 代理类:代购//抽象主题类...原创 2018-10-27 19:46:30 · 118 阅读 · 0 评论 -
javaSE三个特殊的类 -- String类&String类面试题&StringBuffer类
String类String类 String的两种实例化方式 直接赋值(用的最多) String str=“Hello”; 传统方法,实例化对象 String str=new String("Hello"); 字符串相等比较 str.e...原创 2018-10-27 20:55:09 · 273 阅读 · 0 评论 -
java异常练习题:定义一个MulException类继承Exception类,要求两数相乘等于100报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果
题目描述:定义一个MulException类继承Exception类,要求两数相乘等于100报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。 定义一个DivException类继承RuntimeException类,要求两数相除等于2报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果代码如下:package www.Dyson.java;//继承受...原创 2018-11-01 11:52:01 · 1520 阅读 · 0 评论 -
java学习笔记(八)-- 异常
异常体系图Error:描述Java运行时内部错误与资源耗尽错误(OOM,StackOverflow)应用程序不抛出此类异常。这种内部错误一旦出现,除了告知用户并使用安全终止之外,再无能为力。 Exception(程序本身错误):Java应用程序抛出异常。 IOException:程序本身没有问题,由于IO处理导致的程序出错。 RuntimeExcpetion:运行时异常关于受查异常...原创 2018-11-03 19:11:42 · 189 阅读 · 0 评论 -
java学习笔记(十)-- java新特性 (枚举 & 注解 & 接口定义加强 & Lambda表达式)
枚举 (enum)高级的多例模式java中枚举使用enum关键字定义枚举枚举就是一种多例设计模式enmu Color{ RED,BLUE,GREEN; }enum Color{ RED,BULE,GREEN;}public class Test { public static void main(String[] args) { ...原创 2018-11-06 16:06:47 · 205 阅读 · 0 评论 -
indexOf 和 lastIndexOf
indexOf 和 lastIndexOf使用indexOf 的用途是在一个字符串中寻找一个字的位置 lastIndexOf 也是找字 , 它们俩的区别是前者从字符串头开始找,后者是从字符串末端开始找。一但指定的字被找到,就会返回这个字的当前的位置号码。如果没有找到就返回 -1.public class Test { public static void main(Str...原创 2018-11-05 15:35:11 · 290 阅读 · 0 评论 -
java学习笔记(九)-- java新特性 ( 可变参数 & 泛型 & 静态导入 & 类型擦除 )
JDK1.5新特性 方法的可变参数 设计一个方法,可以接收任意个数的整数,并返回他们的相加结果 早期实现方式:public class Test { public static void main(String[] args) { System.out.println(add(new int[]{1,2,3}...原创 2018-11-05 15:59:31 · 215 阅读 · 0 评论 -
java学习笔记(十一)-- 多线程(线程的基本概念 & 多线程的实现 & 多线程常用操作方法) **** 重要 ****
一 线程和进程概念及其区别进程:OS中一个程序的执行周期线程:进程中的一个任务,一个进程可以包含n个线程进程:操作系统中一个程序的执行周期为一个进程进程线程区别1.每个进程拥有自己的一整套变量,是操作系统中资源分配的最小单位。线程依托于进程存在,多个线程共享进程资源,OS中任务调度的基本单位2.启动,撤销一个进程的开销要比启动,撤销一个线程大的多(轻量级进程)3.没...原创 2018-11-13 21:13:18 · 206 阅读 · 0 评论 -
思维导图 --- 继承,封装,多态
思维导图 — 继承,封装,多态传送门: 继承、封装、多态.原创 2018-11-15 15:12:28 · 1131 阅读 · 0 评论 -
java学习笔记(十二)-- 线程同步与死锁
一 线程的同步 ***************同步问题:每一个线程对象轮番抢占共享资源带来的问题首先看一段代码:class MyThread implements Runnable{ private int ticket=10; @Override public void run() { while (this.ticket>0){...原创 2018-11-15 10:53:06 · 162 阅读 · 0 评论 -
java中的CAS操作以及锁机制详解
关于CAS操作CAS:Compare And Swap -- 乐观锁策略CAS(无锁操作):使用CAS叫做比较交换来判断是否出现冲突,出现冲突就重试当前操作直到不冲突为止。悲观锁(JDK1.6之前的内建锁):假设每一次执行同步代码块均会产生冲突,所以当线程获取锁成功,会阻塞其他尝试获取该锁的线程。乐观锁(Lock机制):假设所有线程访问共享资源时不会出现冲突,既然不会出现冲突...原创 2018-11-17 17:00:06 · 8352 阅读 · 7 评论 -
生产-消费者模型
介绍生产消费者模型中所要用到的几个方法:wait() 方法public final void wait()throws InterruptedException;当调用wait()方法后,线程会立刻停止,并将该线程从锁对象的同步队列提取到等待队列(WAIT)中,直到下次被notify()方法唤醒,或者被中断为止。 wait()方法只能在同步代码块或同步方法中使用,必须为synchro...原创 2018-11-20 12:33:59 · 187 阅读 · 0 评论 -
深入理解AbstractQueuedSynchronizer(AQS)
AQS详解在同步组件中,AQS是最核心部分,同步组件的实现依赖AQS提供的模板方法来实现同步组件语义。AQS实现了对同步状态的管理,以及对阻塞线程进行排队、等待通知等等底层实现。AQS核心组成:同步队列、独占锁的获取与释放、共享锁的获取与释放、可中断锁、超时锁。这一系列功能的实现依赖于AQ...原创 2018-11-26 21:21:01 · 229 阅读 · 0 评论 -
javaSE三个特殊的类 -- 包装类
包装类--包装类的存在可以使Object接受一切 包装类就是将基本数据类型封装到类中 范例:class IntDemo{ private int num; public IntDemo(int num){ this.num=num; } public int intValue(){ return num; }...原创 2018-10-30 17:54:15 · 218 阅读 · 0 评论 -
javaSE三个特殊的类 -- Object类
Object类(RealFather) -- 最高参数统一化(所有类都可以向上转型成Object类)Object类是JDK默认提供的一个类,Java中除了Object类,所有类都存在继承关系,默认会继承Object父类 toString()-- 取得对象信息 *** 重要 *** 系统输出默认调用对象的toString()方法,输出类名以及对象地址 ...原创 2018-10-30 17:49:03 · 127 阅读 · 0 评论 -
定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量
定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有), 再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法, 该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。 从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法...原创 2018-10-24 19:02:57 · 3920 阅读 · 0 评论 -
java学习笔记(二)--(对象编程-类与方法上)
面向过程-编程范式-c-行为面向对象-能进行现实生活的抽象面向接口编程面向切面编程 - AOP函数式编程范式 -Scala,Koltin//lamdba表达式()-> { }面向对象三大特征:a.封装 将客观事物封装为抽象的类,并且类可以把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏。内部操作对不可信外部而言不可见(保护性...原创 2018-10-13 18:13:55 · 376 阅读 · 0 评论 -
java--创建一个Test类,包含有一个public权限的int型成员变量与一个char类型的成员变量,观察在main方法中的初始值。
//创建一个Test类class Test1{ //包含有一个public权限的int型成员变量与一个char类型的成员变量 public int a; public char c;}//主类public class Test{ //主函数 public static void main(String[] args){ //声明与实...原创 2018-10-14 10:45:40 · 1272 阅读 · 0 评论 -
java--Fibonacc由数字1、1、2、3...组成的,从第三个数字起每一个数字为前两个数字的和。创建一个方法,接受一个整数参数,显示从第一个元素开始总共由该参数指定的个数所构成的所有斐波那契数
题目完整描述:一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。创建一个方法,接受一个整数参数,并显示从第一个元素开始总共由该参数指定的个数所构成的所有斐波那契数字。例如,如果运行 java Fibonacci 5(Fibonacci为类名),那么输出应该是1、1、2、3、5。public class Fibona...原创 2018-10-14 11:32:37 · 1508 阅读 · 0 评论 -
java--创建一个带默认构造方法(即无参构造)的类,在构造方法中打印一条消息"Hello Constructor";再为这个类添加一个重载构造方法,令其接收一个字符串参数,将其一起打印出来
题目描述:创建一个带默认构造方法(即无参构造)的类,在构造方法中打印一条消息"Hello Constructor";再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello Constructor"和接收的参数一起打印出来。//Person类class Person{ //无参构造 public Person(){ Sys...原创 2018-10-14 11:50:25 · 1089 阅读 · 0 评论 -
剑指offer(面试题四)--替换空格(java)
算法设计:创建一个StringBuilder类型的对象newStr,用于保存结果 从左往右扫描字符串str 如果当前最符str.Charat(i)是空白符,则向newStr中追加"%20";否则,向newStr中追加当前字符 将newStr转换成字符串返回代码如下:public class Solution { public String replaceSpace(S...原创 2018-10-18 17:50:41 · 157 阅读 · 0 评论 -
剑指offer(面试题五)--从尾到头打印单链表
代码如下(递归实现):/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.Ar...原创 2018-10-18 18:06:11 · 174 阅读 · 0 评论 -
java学习笔记(三)--(对象编程-类与方法下)(代码块&继承&覆写)
***重要***代码块 定义:使用{}定义的一段代码 根据代码块出现的位置以及关键字不同,分为以下四类代码块 普通代码块 定义在方法中代码块,了解即可(作用域不同) 构造块(***重要***) 定义在类中的代码块(不加任何修饰符) 当有对象产生时,构造块优先于构造方法执行,产生...原创 2018-10-17 13:58:22 · 201 阅读 · 0 评论 -
java学习笔记(四)--(对象编程-类与方法下)(super关键字 & final关键字 & 多态性 & 实例方法与静态方法之间的关系 & 关于强制类型转化)***重要***
super关键字super表示调用父类方法 调用父类构造方法 super(参数列表) 当在子类中调用父类无参构造时,super(可写可不写) 当子类调用父类有参构造时,super(参数列表)必须要写,告知编译器调用的是哪个父类有参构造 ****** super与this在构造方法中不能同时存在,即子类不存在构造方法的互相调用 super调用父类普通方法...原创 2018-10-20 22:47:03 · 140 阅读 · 0 评论 -
java学习笔记(五)--(对象编程-类与方法下)(内部类 & 静态内部类使用形参为何要是final)***重要***
内部类(可以使用内部类来实现多继承)定义:在一个类中进行其他机构的嵌套内部类的简单定义:class Outer{ private String msg="Hello world!"; //定义一个内部类 class Inner{ //定义一个普通方法 public void print(){ //调用msg...原创 2018-10-20 23:02:07 · 203 阅读 · 0 评论 -
java学习笔记(六)-- (抽象类与接口上)(抽象类&模板设计模式)
抽象类的定义和使用抽象类的定义:抽象类只是比普通方法多了一些抽象方法而已。 抽象方法:只声明而未实现的方法(没有方法体),抽象方法所在的类也一定要使用abstract来定义只声明而未实现的方法不一定为抽象方法,也可能为本地方法(调用c/c++库函数)抽象类的使用原则 1.所有抽象类必须有子类(final(没有子类)与abstract不能同时出现,矛盾) ...原创 2018-10-21 19:38:57 · 295 阅读 · 0 评论 -
java设计模式--模板设计模式
模板方法仅仅使用了Java的继承机制,但它是应用非常广泛的模式,抽象类的实际应用模板方法定义了一个算法的步骤,并允许子类为一个或者多个步骤提供具体实现。模板(模板方法)设计模式:基于抽象类核心在一个方法定义一个算法的骨架,而将一些步骤延迟到子类中。模板模式可以使得子类在不改变算法的前提下,重新定义算法中的某些步骤。注意:为了防止恶意操作,一般模板方法都加上final关键字, 不允许...原创 2018-10-23 19:39:17 · 179 阅读 · 0 评论 -
java设计模式--工厂设计模式(工厂类)
工厂设计模式(工厂,代理 ***,单例):将客户端的new操作解耦到第三方(工厂类)OCP(开闭原则) 简单工厂设计模式(应用场景:产品个数小,没有家族) 1. 抽象产品类(接口) 2. 多个具体产品类 - MacBookPro,SurfaceBooK 3. 一个工厂(new 操作在此工厂中进行)-- 客户端通过工厂类获取具体实例。...原创 2018-10-23 21:32:29 · 305 阅读 · 0 评论 -
java学习笔记(七)--(抽象类与接口下)(接口的定义与使用)
接口的定义与使用 接口优先原则:在一个操作即可以使用抽象类又可以使用接口的时候,优先考虑使用接口。 接口的定义(JDK8以前):接口就是抽象方法与全局常量的集合(纯粹版的抽象类),interfance关键字定义接口 interface IMessage{ //全局常量 public static final String MSG ="I am a biter"...原创 2018-10-24 13:30:59 · 417 阅读 · 0 评论 -
成员内部类中为什么不能有静态方法和属性
非静态内部类不能有静态成员!成员内部类必须先实例化外部类对象然后再实例化成员内部类;非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。1、static类型的属性和方法,在类加载的时候就会存在于内存中。2、要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。基于以上两点,可以看出,如果一个非static的内部类如果具有s...转载 2018-10-24 14:08:22 · 1007 阅读 · 0 评论 -
可中断获取锁与超时等待获取锁源码分析
可中断式获取锁可响应中断式锁可调用方法lock.lockInterruptibly();该方法的底层会调用AQS的acqireInterruptibly方法;acquireInterruptibly()方法:public final void acquireInterruptibly(int arg) throws InterruptedException { ...原创 2018-11-30 17:11:01 · 948 阅读 · 0 评论