
Java
韵然CP
用最简单的语言注释程序
展开
-
java提高篇(四)-----理解java的三大特性之多态
面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么? 所谓多态...转载 2019-04-21 16:19:17 · 236 阅读 · 0 评论 -
Java单例模式
设计模块是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。正确的使用和选择设计模式是软件开发人员在软件开发过程中一个重要的方法。下面的23个模式被认为是其他模式的基础 单例模式:目的:使得类的一个对象成为该系统中唯一实例定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供要点:1、某个类只能有一个实例 ...原创 2019-05-06 16:45:38 · 103 阅读 · 0 评论 -
Java向下转型的条件判断
我们来看下面一个例子:animal:package com.imooc.animal;//抽象类:不允许实例化,可以通过向上转型,指向子类实例public abstract class Animal { //属性:昵称、年龄 private String name; private int month; public Animal(){ } public ...原创 2019-05-06 18:46:43 · 1758 阅读 · 0 评论 -
Java匿名内部类
概念:匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口注意事项:& 编译后的文件命名:外部类$数字 . class& 无法使用 public、private、abstract、static 修饰,匿名内部类不能出现抽象方法& 无法编写构...转载 2019-05-10 21:27:54 · 239 阅读 · 0 评论 -
Java包装类转化
public static void main(String[] args) { // TODO Auto-generated method stub //装箱:把基本数据类型转换成包装类 //1、自动装箱 int t1 = 2; Integer t2 = t1; //2、手动装箱 Integer t3 = new Integer(t1); //测试 Sys...原创 2019-05-11 09:03:11 · 152 阅读 · 0 评论 -
数据结构栈的应用之括号匹配
import java.util.Stack;public class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { ...原创 2019-05-24 16:55:09 · 368 阅读 · 0 评论 -
数据结构数组队列
栈的特点是先进先出,只能在队尾添加元素,只能在队头删除元素我们实现的接口是package Queue;public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}package Queu...原创 2019-05-24 21:23:36 · 140 阅读 · 0 评论 -
数据结构循环队列
为了解决我们数组队列中dequeue时间复杂度为O(n)的问题,我们提出了循环队列,循环队列保证了我们在移除元素时不需要把所有的元素都移一位package Queue;public class LoopQueue<E> implements Queue<E> { private E[] data; private int front , tail; p...原创 2019-05-24 22:27:37 · 465 阅读 · 0 评论 -
数据结构数组队列和循环队列测试
为了看一下我们两个运行的时间我们写了一个测试样例具体的ArrayQueue,LoopQueue的代码参考前面两个代码package Queue;import java.util.Random;public class Test { private static double testQueue(Queue<Integer> queue, int opCount) {...原创 2019-05-25 09:36:24 · 305 阅读 · 0 评论 -
Java字符串的不变性
在Java中我们用的最多的对象类型恐怕就是String了。关于String有一个不变性的特性,什么是字符串的不变性呢?下面有一系列的介绍!一、申明一个字符串 String s = “abcd”; 其中s存储了一个字符串对象的引用,如下图所示:二、将一个字符串变量赋值给另一个字符串变量String s2 = s;其中s2存储了和s一样的引用。因此他们是指向同一个字符串对象,如...转载 2019-05-11 22:13:29 · 779 阅读 · 0 评论 -
Java内部类的概述和匿名内部类的格式
黑马程序员:Java学科-内部类的概述和匿名内部类的格式转载自百家号作者:啊窝额1今日内容:内部类教学目标:能够说出内部类的概念一、内部类概述:什么是内部类的定义将一个类A定义在另一个类B里面,里面的那个类A就被称为内部类,B则称为外部类成员内部类:是定义在类中方法之外的类定义格式如下所示:在描述事物的时候,若一个事物内部还包含其他事物,就可以...转载 2019-05-08 22:26:36 · 609 阅读 · 0 评论 -
Java可变参数列表
可变参数列表主要是指参数数量的可变,可以使一个到多个package www.zxx;import java.util.Scanner;public class test { public static void main(String[] args) { test t1 = new test(); t1.sum(1); t1.sum(1,2); t1.sum(1,...原创 2019-04-30 17:24:47 · 1738 阅读 · 0 评论 -
Java学生选课实例之Map&HashMap创建
student.javapackage com.imooc.collection;import java.util.HashSet;import java.util.Set;/* * 学生类 * */public class student { public String id; public String name; public Set<...原创 2019-04-14 22:20:52 · 1257 阅读 · 0 评论 -
详解KMP算法
什么是KMP算法:KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!!KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段...转载 2019-04-22 15:23:57 · 203 阅读 · 0 评论 -
java.lang.ArrayIndexOutOfBoundsException(数组越界)处理方法
当你使用不合法的索引访问数组时会报数组越界这种错误,数组arr的合法错误范围是[0, arr.length-1];当你访问这之外的索引时会报这个错。例如:public class Test { public static void main(String[] args) { int[] arr = {1, 2, 3}; for (int i = 0; ...转载 2019-04-27 11:36:47 · 5108 阅读 · 0 评论 -
Java学习之路
学了一个多月的java了,越学越盲- -,前几天更是很烦躁,又看到什么Java陨落,Python成为新秀,于是开始怀疑自己学Java是不是有用,昨晚搜了搜很多学习Java的方法,最后还是决定要死磕Java! 其实对于现阶段的真的不知道到底我们未来究竟会以什么来工作,但是经过昨天的查阅,终于明白了,其实语言都有相通之处,更重要的是你的能力,学习能力,遇到一个新的问题如何去解决的能力。我希望...原创 2019-04-27 16:48:24 · 98 阅读 · 0 评论 -
是 String , StringBuffer 还是 StringBuilder ?
原文链接:http://www.blogjava.net/chenpengyi/archive/2006/05/04/44492.html相信大家对String和StringBuffer的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天我在这里重新把这个概念给大家复习一下,顺便牵出J2SE 5.0里面带来的一个新的字符操作的类——Strin...转载 2019-04-27 17:51:00 · 115 阅读 · 0 评论 -
浅谈Java中的对象和引用
在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然。今天我们就来一起了解一下对象和对象引用之间的区别和联系。1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编程思想》...转载 2019-04-18 23:01:02 · 94 阅读 · 0 评论 -
骆驼命名法,帕斯卡命名法和匈牙利命名法
1 . 匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。ex:int iMyAge; “i”是int类型的缩写;char cMyName[10]; “c”是char类型的缩写;float fManHeight; “f”是float类型的缩写;其他:前缀类型 a b by c cb cr cx,cy dw fn h i l ...转载 2019-04-28 15:50:30 · 145 阅读 · 0 评论 -
Java 常见异常类型及原因分析(上)
这里介绍几种常见的异常并对原因进行分析,包括:& NullPointerException 异常;& ClassCastException 异常; NullPointerException 异常顾名思义,NullPointerException 是空指针异常。但是在 Java 中没有指针,怎么会有空指针异常呢?在 C++中,声明的指针需要指向一个实例(通过 ne...转载 2019-05-03 16:42:03 · 533 阅读 · 0 评论 -
Java中包装类型和基本类型的使用场景(什么时候使用包装类型)(转)
说明:最简单的理解,基本类型有默认值,而包装类型初始为null。然后再根据这两个特性进行分业务使用,在阿里巴巴的规范里所有的POJO类必须使用包装类型,而在本地变量推荐使用基本类型。Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。1、整数:包括int、short、byte、long初始值为0。2、浮点型:float、double初...转载 2019-04-19 22:09:20 · 2976 阅读 · 1 评论 -
JAVA中的for-each循环与迭代
原文链接:http://www.cnblogs.com/gl-developer/p/5971372.html在写上一个数组的时候发现在主函数中无法通过for-each调用,所以找了相应的文章在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为...转载 2019-05-22 09:40:39 · 777 阅读 · 0 评论 -
数据结构数组的泛型改造
在我们上一篇数组中我们数组只能放数值型数据,我们要对他进行改造,使之能放别的数据类型的值,但是我们这里的数据类型不可以是基本数据类型,必须是类对象。boolean,byte,char,short,int long float,double是我们的八种基本数据类型但是我们的Java为我们提供了包装类Boolean,Byte,Char,Short,Int,Long,Float,Double...原创 2019-05-22 11:52:10 · 146 阅读 · 0 评论 -
数据结构动态数组
我们对数组进行改造的原理如下:重新建立一个capacity更大的数组,通过for循环让原来数组的数据复制到新的数组里,再让我们原来的数组指向newdate这样我们的date和newdate指向的同一个空间,我们会把这样一个过程封装在函数里,newdate会在执行完后被回收package www.zxx;public class Array<E> { private ...原创 2019-05-23 09:21:21 · 325 阅读 · 0 评论 -
数据结构栈的操作
栈是一种后进先出的数据结构(Last In First Out)Undo操作(撤销)系统栈:存储我们调用的程序我在这里写的Stack是用数组实现的package www.zxx;public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); ...原创 2019-05-24 11:20:15 · 223 阅读 · 0 评论 -
Java字节流之FileOutputStrwam
package www.zxx.file;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileOutDemo { public static...原创 2019-05-31 17:17:36 · 187 阅读 · 0 评论 -
FileInputStream读取文件&FileOutputStream写入文件
原文链接:https://www.cnblogs.com/YLQBL/p/6590964.html概念摘自:http://jingyan.baidu.com/article/5552ef473ab5f2518ffbc98e.htmlJava的流式输入输出建立在4个抽象类的基础上:InputStream,OutputStream,Reader和Writer。它们用来创建具体的流式子类。In...转载 2019-05-31 17:29:24 · 4417 阅读 · 0 评论 -
Java多线程运行
各个线程是通过竞争CPU时间而获得运行机会的各线程什么时候获得CPU,占用多久,是不可预测的一个在运行的线程在什么地方被暂停是不确定的package Threadproj;public class Bank { private String account; private int balance; public Bank(String account, int bala...原创 2019-05-28 20:12:04 · 136 阅读 · 0 评论 -
Java缓冲流
缓冲输入流BufferedInputStream缓冲输出流BufferedOutputStream我们之前的方法是直接读取硬盘中的文件,这实际上很慢,于是我们把读和写的操作放到缓冲里package www.zxx.file;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import...原创 2019-05-31 17:50:38 · 152 阅读 · 0 评论 -
Java线程同步
为了保证在存款或取款的时候,不允许其他线程对账户余额进行操作,需要将Bank对象进行锁定,使用关键字synchronized实现package Threadproj;public class Bank { private String account; private int balance; public Bank(String account, int balance)...原创 2019-05-29 09:20:19 · 945 阅读 · 0 评论 -
Java线程间通信
对于我们的银行账户,两个线程之间并没有联系,这就会出现余额不足但是还能取钱的状况,为了解决这个问题,我们就使用线程间通信来解决wait()方法:中断方法的执行,使线程等待notify()方法:唤醒处于等待的某一线程,使其等待结束notifyAll()方法:唤醒处于等待的所有线程,使其等待结束package Threadproj;public class Consumer im...原创 2019-05-29 09:52:38 · 147 阅读 · 0 评论 -
Java字符流
字符输入流:Reader字符输出流:Writer字节字符转换流:InputStreamReader,OutputStreamWriterpackage www.zxx.file;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;...原创 2019-05-31 21:30:00 · 2094 阅读 · 0 评论 -
Java对象序列化
把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出...原创 2019-05-31 22:21:13 · 141 阅读 · 0 评论 -
Java线程优先级
Java为线程类提供了是个优先级优先级可以用整数1-10表示,超过范围会抛出异常主线程默认优先级为5优先级常量MAX_PRUORITY:线程的最高优先级10MIN_PRUORITY:线程的最高优先级1NORM_PRUORITY:线程的默认优先级5优先级的相关方法:public int getPriority() ...原创 2019-05-28 11:52:38 · 597 阅读 · 0 评论 -
Java线程的join方法
Thread类的方法:签名:public final void join()作用:等待调用该方法的线程结束后才能执行,也就是调用该方法的进程会抢占CPU优先执行,执行完这个进程其他进程才能执行package Threadproj;class MyThread1 implements Runnable{ int i; @Override public void run() {...原创 2019-05-28 11:07:36 · 315 阅读 · 0 评论 -
java异常例子
我们有一个货物的类package com.imooc.set;public class Goods { private String id;//商品编号 private String name;//商品名称 private double price;//商品价格 //构造方法 public Goods(String id,String name,double price){ ...原创 2019-05-17 22:20:41 · 1070 阅读 · 0 评论 -
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
原文链接:https://blog.youkuaiyun.com/u012972294/article/details/89165135昨天讲到线程的时候讲wait方法的时候,原以为直接写个wait()就ok了://实现Runnable接口class World implements Runnable{Thread thread;public World(){thread=new Th...转载 2019-05-30 09:00:23 · 3333 阅读 · 0 评论 -
Java File类
流是指一串流动的字符,以先进先出的方式发送信息文件可认为是相关记录或放在一起的数据的集合package www.zxx.file;import java.io.File;import java.io.IOException;public class FileDemo { public static void main(String[] args) { // 创建文件...原创 2019-05-30 09:37:52 · 115 阅读 · 0 评论 -
Java字节流
字节输入流InputStream字节输出流OutputStreamFileInputStream:从文件系统中的某个文件中获得输入字节用于读取注入图像数据之类的原始字节流如果文件读完,返回值为-1package www.zxx.file;import java.io.FileInputStream;import java.io.FileNotFoundExc...原创 2019-05-30 09:53:13 · 256 阅读 · 0 评论 -
数据结构数组的简单时间复杂度分析
O 描述的是算法的运行时间和输入数据之间的关系(简单)但实际的时间是T=c1*n+c2c1是for存储运算一共需要的时间,这个时间由机器码指令、cpu有关,我们把这样的线性关系抽象为O(n)第四个显示了我们的时间复杂度计算时低阶的会被忽略实际上我们的O是渐进时间复杂度,描述的是n趋近于无穷大的情况我们的数组中的操作分析:修改操作时只需要访问index位...原创 2019-05-23 10:41:01 · 1540 阅读 · 0 评论