
java
文章平均质量分 51
jamie_byr
这个作者很懒,什么都没留下…
展开
-
多线程(Thread)
进程:正在进行中的程序,在内存中开辟的空间。线程:就是进程中的一个负责程序执行的控制单元,相当于进程中的一条执行路径。一个进程可以有多个执行路径,称为多线程,但是至少要有一个线程。线程的创建方法:继承Thread类(开发中不常用) 1,定义一个类继承Thread类。 2,覆盖Thread类中的run方法。 3,直接创建Thread的子类对象创建线程。 4,调用start方法...原创 2018-03-22 23:38:34 · 178 阅读 · 0 评论 -
String
String的初始化 1、String s = "sncv"; "sncv"存储在字符串常量池中,如果常量池中存在,则不需要创建,直接用就好,如果常量池中不存在,就需要创建。 2、String s = new String("abc"); 在堆中创建两个对象,一个字符串对象,一个new对象。String中的equals方法 Object类中的equal...原创 2018-04-01 16:40:16 · 154 阅读 · 0 评论 -
基本类型与字符串之间的转换
基本数据类型转换为字符串 1、基本数据类型值 + ""; int i = 1;String s = i + ""; 2、String的静态方法valueOf(基本类型数值)int i = 1;String s = String.valueOf(i); 字符串转换为基本数据类型 1,使用包装类中的静态方法xxx parseXxx("xxx类型的字符串");String s...原创 2018-04-01 19:07:25 · 344 阅读 · 0 评论 -
HashSet和TreeSet
Set中元素不可以重复,是无序的(这里无序是指存入元素的先后顺序与输出元素的先后顺序不一致)HashSet:内部的数据结构是哈希表,是线程不安全的。 HashSet中保证集合中元素是唯一的方法:通过对象的hashCode和equals方法来完成对象唯一性的判断。 如果对象的hashCode值不同,则不用判断equals方法,就直接存到HashSet中。 如果对象的hashCode...原创 2018-04-01 22:25:27 · 332 阅读 · 0 评论 -
泛型(generic)
泛型:jdk1.5出现的安全机制,将运行时期的ClassCastException问题转到了编译时期。避免了强制转换的麻烦。泛型技术用于编译时期,确保了编译安全。适用范围:当操作的引用数据类型不确定的时候,就使用<>。使用时将要操作的引用数据类型传入即可。其实<>就是一个用于接收具体引用数据类型的参数范围。在程序中,只要用到了带有<>的类或者接口,就要明确传入的...原创 2018-04-01 23:07:04 · 120 阅读 · 0 评论 -
Map相关
Map:一次添加一对元素。存储的是键值对,且Map集合中必须保证键的唯一性。(Collection一次添加一个元素。)Map称为双列集合,Collection称为单列集合。Map常用的子类有:HashTable:内部是哈希表,是线程安全的,不允许null作为键和值。Properties是一种哈希表,用来存储键值对型的配置文件的信息。HashMap:内部是哈希表,是线程不安全的,允许null作为键和...原创 2018-04-02 17:06:41 · 209 阅读 · 0 评论 -
正则表达式
正则表达式可以用来操作字符串数据,是通过一些特定的符号来体现的。正则表达式的常见规则: [abc] a、b或c(简单类) [^abc] 任何字符,除了abc [a-zA-Z] a到z或者A到Z [a-d[m-p]] a到d或者m到p [a-z&&[def]] a到z与def之间的交集。 . 任何字符 \d 数字[0-9] \D 非数字[^0-9] \s 空白字符 \S 非空白字符 ...原创 2018-04-09 22:48:46 · 201 阅读 · 0 评论 -
Collections和Arrays工具类
Collections和Arrays都是集合框架中的工具类,方法都是静态的。Collections工具类中常用的方法 Collections.swap(list, i, j):交换集合list中位置i和位置j的元素位置。 Collections.sort(list):按照自然顺序给集合list排序。也可以自定义比较器对集合进行排序,如Collections.sort(list, new...原创 2018-04-02 21:51:09 · 459 阅读 · 0 评论 -
函数的可变参数
函数的可变参数:即函数的参数类型已知,但是参数的个数是可变的。表现形式如下:public static int newAdd(int... arr){ int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } return sum;}函数的可变参数用"..."表示...原创 2018-04-02 21:59:10 · 174 阅读 · 0 评论 -
网络编程相关知识点
TCP/IP参考模型:7层协议,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在发送端,数据需要从上到下进行封装,每经过一层,都会在数据包的头文件增加一些信息,而在接收端,数据需要从下到上进行解包装,依次取出包头信息。IP地址(InetAddress):网络中设备的标识,本地回环地址127.0.0.1,主机名localhost。端口号:用于标识进程的逻辑地址,不同进程的...原创 2018-04-02 23:05:12 · 296 阅读 · 0 评论 -
java的反射机制
java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取信息以及动态调用对象的方法的功能成为java语言的反射机制。(动态获取类中的信息,就是java反射,也可以称为对类的解剖)想要对字节码文件进行解剖,就必须要有字节码文件对象。下面介绍三种方法获取字节码文件对象:使用Object类中的ge...原创 2018-04-05 20:56:22 · 123 阅读 · 0 评论 -
对象实例化的过程
一个对象实例化的过程(假设对象是Person):Person p = new Person();jvm会读取指定路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接父类的情况下)在堆内存中开辟空间,分配地址。并在对象空间中,对对象中的属性进行默认初始化。调用对应的构造函数进行初始化。在构造函数中,第一行会先调用父类中的构造函数进行初始化。父类初始化完毕后,再...原创 2018-04-05 11:50:09 · 717 阅读 · 0 评论 -
UDP客户端与服务端间通信的通信
发送端package cn.itcast.net.p2.udp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import ja...原创 2018-04-05 21:20:29 · 235 阅读 · 0 评论 -
TCP客户端与服务端之间的通信
客户端package cn.itcast.net.p4.tcp;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class ClientDemo2 { /** * * @param args *...原创 2018-04-05 21:24:10 · 742 阅读 · 0 评论 -
JAVA中的代码块、静态代码块、构造方法、main方法执行顺序
转载:https://blog.youkuaiyun.com/lzxomg/article/details/51858664java中静态代码块,普通代码块,构造代码块区别及代码示例执行顺序:(优先级从高到低)静态代码块>main方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块普通代码块:在方法或语句中出现的{ }就称为普通代码块。普通...转载 2018-04-19 10:55:59 · 669 阅读 · 0 评论 -
二叉树的遍历(深度遍历+广度遍历)
此处以二叉树的前序遍历为例(即先遍历根节点,再遍历左节点,最后遍历右节点)其他遍历参考:https://www.cnblogs.com/gl-developer/p/7259251.html实现代码如下/*二叉树的递归遍历(前序遍历)1、深度遍历:对于一个节点,一直遍历其子节点,直到节点为null为止。*/public void depthOrderTranversal(TreeNode ...原创 2018-04-13 21:31:49 · 238 阅读 · 0 评论 -
关于JAVA的包访问权限
转载:https://blog.youkuaiyun.com/wanghao_0206/article/details/52710094众所周知,JAVA提供了许多级别的访问权限,从而可以精确的控制类、超类以及包中变量和成员的可见性。从而更好的实现封装、继承,多态。现在我们将对每一种包访问权限做一些说明,可能有遗漏或者错误,请大家多多指正。这里我们主要分析类成员的包访问权限。因为类和包的相互影响,对于JAVA...转载 2018-04-21 11:07:50 · 284 阅读 · 0 评论 -
谈谈Java中的语法糖
转:https://blog.youkuaiyun.com/danchu/article/details/54986442总结的很好转载 2018-06-05 15:36:02 · 360 阅读 · 0 评论 -
Vector、ArrayList和LinkedList
List中元素有序,且是可以重复的。(有序是指元素存入的先后顺序与输出的先后顺序是一致的)Vector 内部是数组数据结构,是线程安全的。是最早出现的list接口(现在几乎不怎么使用)。Vector是百分百延长数组,即新数组的长度是原来数组长度的2倍。ArrayList 内部是数组结构,是线程不安全的。替代了Vector,遇到多线程情况,可以通过加锁来实现线程安全。ArrayList是...原创 2018-04-01 21:30:31 · 131 阅读 · 0 评论 -
迭代器(Iterator)遍历的两种方法(for和while)
while循环遍历Collection coll = new ArrayList();coll.add("abc1");coll.add("abc2");coll.add("abc3");coll.add("abc4");Iterator it = coll.iterator();while(it.hasNext()){ System.out.println(it.next()...原创 2018-04-01 20:47:48 · 21497 阅读 · 3 评论 -
java中一些比较有用的快捷键
在当前文件夹中生成javadoc文件(java说明文档)javadoc -d myhelp -auther -version ArrayTool.java//myhelp为当前文件夹,如果存在,则直接将生成的文件放入文件夹中,如果当前文件夹不存在,则新生成一个文件夹‘包’在文件中的体现是文件夹java中用命令在编译过程中自动生成包文件夹的语句为:javac -d . *.javaJar命令:将...原创 2018-03-23 14:32:12 · 206 阅读 · 0 评论 -
break和continue
breakbreak跳出当前所在的循环.当break语句单独存在时,后面如果定义了其他语句,执行不到,编译时会报错.如果出现了嵌套循环,break想要跳出指定的循环,可以通过给循环体添加标识来完成跳出操作。 outsideLoop: for(int x = 0; x < 3; x++){ innerLoop: for(int y = 0; y <...原创 2018-03-20 10:22:44 · 922 阅读 · 0 评论 -
逻辑&&和逻辑||操作
&&和||操作满足短路操作。&&:与&运算的结果是一样的,但是运算过程不同。 &:无论左边的运算结果是什么,右边都参与运算, &&:当左边为false时,右边不参与运算,即不进行运算。||:与|运算的结果是一样的,但是运算过程不同。 |:无论左边的运算结果是什么,右边都参与运算, ||:当左边...原创 2018-03-20 10:32:25 · 442 阅读 · 0 评论 -
最有效的计算2*16的方法——位运算(左移和右移)
位运算包括左移和右移。无符号数a的左移相当于将该数用二进制表示,左移n位就是把最高位n位移出,低位添加n个0的操作,左移操作相当于将该数乘以2^n次方。无符号数a的左移相当于将该数用二进制表示,右移n位就是把低位n位移出,高位添加n个0的操作,右移操作相当于将该数除以2^n次方。注意:上述两种操作对于有符号数不满足,因为有符号数最高位为符号位,进行左移或右移操作会使改变数的符号。计算时位运算的效率...原创 2018-03-20 10:47:46 · 8225 阅读 · 0 评论 -
对两个变量的数值进行互换,要求不用第三方变量——位运算符(异或)
对于上述问题(在实际开发时不经常使用),有两种思路:可以通过两个变量的和/差不变原则,通过加减运算变换两个整数的值。此方法有局限性,如果两个数的数值过大,会超出范围,会强制转换,数据会发生变化。 class test{ public static void main(String[] args) { int a = 3, b = 5; a =...原创 2018-03-20 10:58:14 · 892 阅读 · 1 评论 -
成员变量与局部变量的区别
成员变量与局部变量的区别:1,成员变量定义在类中,整个类中都可以访问。局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。2,成员变量存在于堆内存的对象中局部变量存在于栈内存的方法中3,成员变量随着对象的创建而存在,随着对象的消失而消失。局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。4,成员变量都有默认初始化值。局部变量没有默认初始化值。...原创 2018-03-21 11:53:30 · 155 阅读 · 0 评论 -
构造函数
构造函数:构建创造对象时调用的函数.一个类中如果没有定义构造函数,那么该类中会有一个默认的空参数构造函数.如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有.一般函数和构造函数的区别:构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化.一般函数:对象创建后,需要函数功能时才调用.构造函数:对象创建时,只调用一次。一般函数:对象创建后,可以被调用多次。...原创 2018-03-21 11:58:15 · 155 阅读 · 0 评论 -
关键字static & final
static的特点:static是一个修饰符,用于修饰成员。static修饰的成员被所有的对象所共享。static优先于对象存在,因为static的成员随着类的加载就已经存在了。static修饰的成员多了一种调用方式,就是可以直接被类名所调用。类名.静态成员。static修饰的数据是共享数据,对象中存储的是特有数据。成员变量和静态变量的区别:两个变量的生命周期不同。 成员变量随着对象...原创 2018-03-21 12:04:02 · 151 阅读 · 0 评论 -
单例设计模式(Single)
单例设计模式是为了保证对象的唯一性。即满足下列条件:不允许其他程序用new创建该类实例.只能在该类中创建一个本类实例,并对外提供一个方法,让其他程序可以获取该对象.单例设计模式包括饿汉式和懒汉式:class Single//饿汉式,开发时用的比较多。类一加载,对象就已经存在了{ private static Single s = new Single();//成员变量私有化 pr...原创 2018-03-21 12:17:30 · 280 阅读 · 0 评论 -
子父类中的构造函数的特点
在子类的构造函数中第一行有一个默认的隐式语句。super();如果父类中的构造函数使用的不是默认构造函数,则需要在子类构造函数的第一行显式调用带参数的super(),明确要调用父类中哪个构造函数.子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能定义在第一行。所以只能有一个。构造函数不能覆盖,也没有直接继承.为什么子类实例化时要访问父类的构造...原创 2018-03-21 13:50:08 · 161 阅读 · 0 评论 -
接口(interface)
接口(interface):当一个抽象类中的方法都是抽象的时候,可以称之为接口。(抽象方法只能存在于抽象类中,抽象类中可以有非抽象方法)接口中包含的成员有(接口中的成员都具有公共权限):全局变量。public static final抽象方法。public abstract接口的好处:java中不直接支持多继承,但是可以进行多实现,即一个类可以实现多个接口。抽象类与接口的区别:抽象类需要被继承,只...原创 2018-03-21 14:11:23 · 129 阅读 · 0 评论 -
多态
多态:父类或者接口的引用指向其子类的对象,即一个对象对应着不同类型。多态时成员的特点:成员变量。编译时:参考引用型变量所属的类中是否有调用的成员变量,有,编译通过,没有,编译失败。运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。简单说:编译和运行都参考等号的左边。成员函数(非静态)。编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过,没有,编译失败。运...原创 2018-03-21 14:21:51 · 127 阅读 · 0 评论 -
异常(Exception)
异常的分类:1,编译时被检测的异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。 这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。 这样的问题都可以针对性的处理。2,编译时不检测的异常(运行时异常):就是Exception中的RuntimeException和其子类。 这种问题的发生,无法让功能继续,运算无法运行,更多是因为调用者的...原创 2018-03-21 14:55:31 · 128 阅读 · 0 评论 -
同步代码块、同步函数和静态同步函数
同步代码块的锁可以是任意对象Object obj = new Object();synchronized(obj){ if(num > 0) { try{Thread.sleep(10);} catch(InterruptedException e){}; System.out.println(Thread.currentThread()....原创 2018-04-01 10:14:21 · 1591 阅读 · 0 评论 -
等待唤醒机制
1、wait() 让线程处于冻结状态,释放执行权,释放执行资格。被wait的线程会被存储到线程池中。2、notify() 唤醒线程池中的任意一个线程。3、notifyAll() 唤醒线程池中的所有线程。上述这些方法都需要定义在同步中,且要明确是哪个锁上的线程。假设当前锁为lock,则上述方法的调用形式是lock.wait(),lock.notify(),lock.notifyAl...原创 2018-04-01 10:35:04 · 222 阅读 · 0 评论 -
java中十进制与非十进制之间的转换
十进制转换为其他进制 1、Integer.toBinaryString(int i):十进制转换为2进制。 Integer.toHexString(int i):十进制转换为16进制。 Integer.toOctalString(int i):十进制转换为8进制。 2、Integer.toString(int i, radix):i为十进制数,radix...原创 2018-04-01 19:42:44 · 883 阅读 · 0 评论 -
java的自动装箱与拆箱
java的自动装箱与拆箱是针对基本数据类型而言的。自动装箱:基本数据类型转换为引用类型的数据时会进行自动装箱。自动拆箱:当引用类型的数据与基本类型数据进行运算时会进行自动拆箱。int num = 4;Integer i = 4;//i = new Integer(4);自动装箱i = i + 6;//i = new Integer(i.intValue() + 6);自动拆箱基本数据类型与基本...原创 2018-04-01 20:08:48 · 122 阅读 · 0 评论 -
JAVA三层架构,持久层,业务层,表现层的理解
转自:https://blog.youkuaiyun.com/ljf_study/article/details/64443653SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层)Struts:Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。在MVC框架中,Structs属于VC层次,负责界面表现,负责MVC关系的分发。(view:沿用JSP,HTTP...转载 2018-05-31 16:19:00 · 8163 阅读 · 0 评论