![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java的漫长学习之路
一斤草莓吃光光
看我如何慢慢慢慢慢慢得成为学霸。。。
展开
-
【LeetCode刷题】排列两个有序链表Merge Two Sorted Lists(递归思想)(java)
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Output: 1->1->2->原创 2018-01-22 16:05:06 · 300 阅读 · 0 评论 -
Java学习笔记之类中的静态代码及为什么静态不能访问非静态
静态代码块是随着类的加载而执行,而且只执行一次 1、作用:可以给类初始化 2、应用场景:类不需要创建对象,但是需要初始化,这时可以将代码写为静态 静态方法的调用就是 类名.方法名class Demo{ static void show(){ System.out.println("静态代码执行"); }}class Demo{ public static v原创 2016-12-05 22:06:36 · 323 阅读 · 0 评论 -
java学习笔记之成员/局部变量,封装,参数传递和构造函数
成员变量和局部变量区别:1、 源代码中定义的位置不同。成员变量定义在类中,局部变量定义在方法中(只要是类的下一级大括号都是局部的)2、 内存中的存储位置不同。成员变量存储在堆内存的对象中,局部变量存储在栈内存的方法中。3、 生命周期不同。成员变量随着对象的出现而出现。局部变量随着所属区间的运行而出现,随着所属区间的结束而释放-----------------------------原创 2016-11-16 09:30:40 · 1084 阅读 · 0 评论 -
排序算法(七):JAVA实现堆排序
堆的定义:如果一棵完全二叉树,其父节点的值总是≤\leq或≥\ge它的两个子节点的值,就称这个树为堆。其中,如果根节点的值最大,成为大顶堆;根节点的值最小,成为小顶堆。 堆排序是一种树形选择排序,其原理是:将给定的初始序列看做是一个顺序存储的二叉树,然后将其构造成大顶堆或者小顶堆,此时,根节点元素为最大值或最小值,将根节点元素与末尾元素交换;在将末尾元素之前的节点重新构造成大顶堆或小顶堆,如此原创 2017-07-31 10:41:20 · 265 阅读 · 0 评论 -
排序算法(六):JAVA实现快速排序
推荐文章:http://developer.51cto.com/art/201403/430986.htm 快速排序的排序效率在同为O(n∗logn)O(n*logn)的几种排序方法中效率较高。快速排序采用的思想是分治思想。 快速排序是找出一个元素作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。原创 2017-07-27 16:35:50 · 338 阅读 · 0 评论 -
排序算法(五):JAVA实现归并排序
归并排序是采用分治法(Divide and Conquer)的一个典型应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 基本思路: 先递归的把数组划分为两个子数组,一直递归到数组中只有一个元素,然后再调用函数把两个子数组排好序,因为该函数在递归划分数组时会被压入栈,所以这个函数真正的作用是对两个有序的子数组进行排序; 图片来源:http:/原创 2017-07-27 14:28:52 · 295 阅读 · 0 评论 -
排序算法(四):JAVA实现希尔排序
希尔排序是时间复杂度突破O(n2)O(n^2)的最早的一批算法之一,它是直接插入排序的升级版。 思想:由于直接插入排序在待排序列基本有序的情况下效率是很高的,但是在实际情况中,很少能满足基本有序。希尔排序就是要为直接插入排序创造基本有序的条件。 过程:以{9,1,5,8,3,4,6,10,2,12}为例 要确认分组的条件,即确认一个增量increment。 (1)设置第一次的增量原创 2017-04-11 10:54:28 · 311 阅读 · 0 评论 -
排序算法(三):JAVA实现直接插入排序
直接插入排序 直接插入排序的思想是将一个数据插入到已经排好的有序表当中,得到一个新的有序表。步骤如下: (1)将数组第一个数arr[0]作为已知有序表; (2)若第二个数比第一个数大,插入到arr[0]的左边,否则插入到右边,从而得到新的有序表; (3)往后依次进行,直到最后一个数放到适当的位置public class StraightInsertionSort { public s原创 2017-07-31 10:43:48 · 303 阅读 · 0 评论 -
排序算法(二):JAVA实现选择排序
简单选择排序:遍历数组,两两比较,如果反序就交换,遍历完成后,也就排好了。public class SelectSort { public static void main(String[] args) { int[] arr = {15,58,42,12,1,47,65,6,89,47,56}; sort(arr); } private st原创 2017-07-31 10:42:59 · 203 阅读 · 0 评论 -
排序算法(一):JAVA实现冒泡排序
1、冒泡排序:属于交换排序,思想是只比较相邻的两个数据,这样第一次遍历结束后,就可以确定最后一位的数据,然后再循环遍历最后一位之前的数据。public class BurbleSort { public static void main(String[] args) { int[] arr = {15,58,42,12,1,47,65,6,89,56};原创 2017-04-11 09:52:24 · 226 阅读 · 0 评论 -
java垃圾回收机制总结版
垃圾回收需要确认以下几件事情: 1、哪些内存需要回收 2、什么时候回收 3、如何回收1、哪些内存需要回收程序计数器、虚拟机栈、本地方法栈三个区域随着线程生而生,随着线程灭而灭;栈中的栈帧随着方法的进入和退出有条不紊地执行者出栈和入栈的操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结原创 2017-07-17 15:53:42 · 241 阅读 · 0 评论 -
JAVA学习之基于UDP的通信
UDP是不需要连接的通信协议,需要两个端:发送端和接收端。UDP通信可以使用DatagramSocket的send和receive方法。下面通过代码实现UDP发送端和接收端互通。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Dat原创 2017-03-22 20:39:06 · 323 阅读 · 0 评论 -
CVTE电面面试题
CVTE1、首先简短的自我介绍及项目介绍 2、java (1)java的异常处理机制 (2)java的异常体系 (3)RuntimeException和非RunTimeException的区别 (4)thow和throws的区别(5)你常用的集合有什么–>LinkedList (6)LinkedList和ArrayList的区别 (7)上面两个查询的时间复杂度是什么? (8)经常用H原创 2017-04-06 21:48:46 · 693 阅读 · 0 评论 -
IO流各个类和对象的小结
学完IO流的各个流对象,感觉很混乱,所以写个小结出来。 1、首先,IO流技术是用来操作设备上数据的,而数据最常见的就是文件,所以首先学到的是File对象和文件的操作,包括创建、删除等。API中都有其常用的方法。 2、学完File对象,下面学习的是如何操作文件中的数据。API中提供了可以操作文件数据的字节流对象 InputStream 备注 OutputStream 备注 Inp原创 2017-03-23 16:18:47 · 383 阅读 · 0 评论 -
JAVA正则表达式练习题(IP地址排序、检验email地址)
1、需求: 将“我我我、、、我我、、我要、我要要、、、要要要、、要要、、学学学、、、、学学编、、、学编编编、、编编编程、、程程”还原成:我要学编程public class RegexTest1 { public static void main(String[] args) { String temp = "我我我、、、我我、、我要、要要、、、要要要、、要要、、学学学、、、、原创 2016-12-05 10:48:24 · 4942 阅读 · 1 评论 -
【LeetCode刷题】有效的括号字符串Valid Parentheses(java)
题目: Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.The brackets must close in the correct order, “()” and “()[]{}” are all val原创 2018-01-22 15:19:27 · 477 阅读 · 0 评论 -
【LeetCode刷题】最长回文子串Longest Palindromic Substring(java)
题目:Given a string, find the length of the longest substring without repeating characters. Examples: Given “abcabcbb”, the answer is “abc”, which the length is 3. Given “bbbbb”, the answer is “b”, w原创 2018-01-18 16:39:32 · 1770 阅读 · 0 评论 -
SpringMVC中的配置文件applicationContext.xml和dispatcher-servlet.xml
原文链接:https://www.cnblogs.com/parryyang/p/5783399.html 在SpringMVC项目中我们一般会引入applicationContext.xml和dispatcher-servlet.xml两个配置文件,这两个配置文件具体的区别是什么呢?Spring 官方文档介绍如下:Spring lets you define multiple contexts转载 2017-12-13 18:04:12 · 1085 阅读 · 0 评论 -
java访问权限再复习
一、Java语言中有4中访问修饰符:friendly(默认)、private、public和protected。 public :能被所有的类(接口、成员)访问。 protected:只能被本类、同一个包中的类访问;如果在其他包中被访问,则必须是该成员所属类的子类。 private:成员变量和方法都只能在定义它的类中被访问,其他类都访问不到。对成员变量的进行获取和更改,一般用get(),set原创 2017-11-06 16:02:24 · 192 阅读 · 0 评论 -
StringBuffer、StringBuilder、如何实现可变长
1、各自简介 String:字符串常量,final修饰。其中,String类源码中有 一个char类型数组 private final char value[],可以看到是final类型的,因此,是不可变长度的。 StringBuffer:线程安全的可变字符序列。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。它的ap原创 2017-10-21 18:49:05 · 2492 阅读 · 0 评论 -
java多线程中并发集合和同步集合
java多线程中并发集合和同步集合有哪些? java.util.concurrent包中包含的并发集合类如下:ConcurrentHashMap CopyOnWriteArrayListCopyOnWriteArraySetHashMap 是非同步的,故在多线程中是线程不安全的,不过也可以使用同步类来进行包装: 包装类Collections.synchronizedMa原创 2017-09-12 14:18:36 · 2574 阅读 · 0 评论 -
反射机制
反射机制可以动态地获取类以及类中的成员。 假设A是一个类。 (1)getClass()方法 所有类对象(Object)都有getClass方法,用于返回此对象运行时的类Class。可以用于判断两个对象运行时类是否相同。A a = new A();Class cla = a.getClass();应用:equals方法public boolean equals(Object obj) {原创 2017-07-05 17:08:41 · 226 阅读 · 0 评论 -
JAVA深复制浅复制
当类中只有基本数据类型的时候,可以进行浅复制,需要复制的类首先要继承Clonebale接口(只是一个标识接口),然后重写clone()方法public class Clone implements Cloneable{ private int a = 0; public int getInt(){ return a; } public int chan原创 2017-08-03 11:23:27 · 357 阅读 · 0 评论 -
XMLHttpRequest对象属性及常用方法
XMLHttpRequest是Ajax主要应用于处理发送异步处理请求和回应的,用户在后台和服务器交换数据,它有以下几个属性 1、readyState 每次这个属性的值增加的时候,都会触发 onreadystatechange 事件。该事件用于指定当readystate状态改变时使用的操作,一般用于指定具体的回调函数。 2、responseText 目前为止为服务器接收到的响应体(不包括头原创 2017-07-25 15:42:41 · 12732 阅读 · 0 评论 -
LeetCode算法题:JAVA实现整数反转reverse integer
题目来源:LeetCode Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 1、首先我想到的是最笨的方法 思路:将整数转为数组,通过数组的角标来实现反转,再将数组最终转为int类型(数组–>String–>Integer)public class rever原创 2016-12-21 21:07:17 · 5033 阅读 · 5 评论 -
JAVA学习之基于TCP的通信过程
TCP是面向连接的通信协议,通信分为两端:服务端和客户端。不同于UDP通信使用DatagramSocket的send和receive方法进行数据的发送和接收,TCP是通过两端建立连接之后的Socket IO流进行通讯的。 通信过程的IO流如下 通过下面具体的代码可以清楚的理解TCP通讯过程。/* * TCP客户端: * 1、建立TCP客户端服务 * 1)publ原创 2017-03-22 17:37:12 · 1591 阅读 · 0 评论 -
JAVA中的异常处理机制及异常分类
JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。一、异常分类如下: –>Throwable是 Java 语言中所有错误或异常的超类。下一层分为Error和Exception –>Er原创 2017-04-01 16:18:27 · 25705 阅读 · 1 评论 -
java学习笔记之多线程
线程是比进程更小的执行单位,一个进程可以划分为多个线程。对于多线程的内存解释,线程没有独立的内存空间,而是与所属的进程中的其他线程共享一个内存空间,每个线程栈中实现先进后出。每个java程序都有一个默认的主线程,一般来说main方法执行的线程就是主线程。一、如何创建线程通过查阅API可以知道创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重原创 2016-11-24 16:39:05 · 337 阅读 · 0 评论 -
java继承练习课
1、运行结果是什么public class TestA { void fun1(){ System.out.println(fun2()); } int fun2(){ return 12; }}public class TestB extends TestA{ int fun2(){ return 34; } public static void mai...原创 2016-11-24 15:02:55 · 419 阅读 · 0 评论 -
java学习笔记之异常
异常发生在运行时期。 Throwable类是java.lang包中的一个类 异常的处理 1、不进行具体的处理,而是继续抛给调用者class Demo{ int div(int a,int b) throws Exception //将异常抛给主函数 { return a/b; }}class Test{ p...原创 2016-11-23 22:16:34 · 300 阅读 · 1 评论 -
java学习笔记之抽象类,接口,多态
抽象函数,抽象类特点:1、抽象方法一定定义在抽象类中,都需要abstract修饰2、抽象类不能实例化3、只有子类覆盖了所有的抽象方法后,子类就可以创建对象;如果子类没有覆盖抽象方法,子类还是一个抽象类。就是强制让子类具备父类的方法抽象类也是不断的向上抽取来的。抽取了方法的声明而不确定具体的方法内容,由不同的子类来确定方法的主体内容----------------------原创 2016-11-17 21:49:32 · 683 阅读 · 0 评论 -
JAVA学习笔记之正则表达式
正则表达式(regular expression)描述的是一种字符串匹配的模式,使字符串更易于操作。但其弊端就是使代码的阅读性降低。 专门用于对字符串的操作包括: 1、匹配 String类中提供了匹配的方法matches() boolean matches(String regex) —->告知此字符串是否匹配给定的正则表达式。 2、切割 String类中提供了切割的方法 Strin原创 2016-12-04 22:49:16 · 511 阅读 · 0 评论 -
java学习笔记之String类及其练习
String类是java.lang包内的一个特殊的对象 一、定义一个字符串常量public class StringDemo { public static void main(String[] args) { String str1="abc"; //存放到字符串的常量池中,这个值不能被改变 String str2=new String("abc"); /原创 2016-12-01 16:03:57 · 715 阅读 · 0 评论 -
java学习笔记之内部类
内部类:一个类定义在一个类的内部;A类要直接访问B类中的成员时,可以将A类定义到B类中,作为B类的内部类存在;访问规则:内部类可以直接访问外部类中的成员;外部类要访问内部类只能创建内部类的对象 ;内部类有所属,生成的class文件名称为Outer$Inner;内部类相当于外部类中的一个成员,那么就可以被成员修饰符修饰,public、static、private;非静态非私有内部...原创 2016-11-23 15:02:35 · 296 阅读 · 0 评论 -
java学习笔记之多线程的锁接口Lock
众所周知,多线程的弊端是会使代码受到并发访问的干扰,解决的办法就是同步机制。同步的两种常见形式分别是同步代码块和同步函数,两种形式的锁都是隐式锁,前者持有的锁可以是任意对象,后者持有的锁是默认的this。 从JDK1.5开始,根据面向对象的思想,将锁封装了起来,对外提供Lock接口,并提供了对锁的显式操作。Lock接口的出现比synchronized有更多的操作,是同步...原创 2016-11-30 14:33:26 · 1475 阅读 · 0 评论 -
数组应用之转十六进制
public class toHex {public static void main(String[] args) {// TODO Auto-generated method stubint num=60; System.out.println(Hex(num));}//简单版本/*private static void Hex(int num) {原创 2016-11-15 11:20:39 · 394 阅读 · 0 评论 -
final关键字
继承的弊端:有可能打破封装性,也就是说子类可能会覆盖掉父类中不能被覆盖的代码final修饰符可以修饰类,还可以修饰方法和变量(任何变量)-->final修饰的类不能被继承-->final修饰的方法不能被覆盖,但是可以覆盖别的方法-->final修饰的变量是一个常量,只能被赋值一次,被final修饰的变量的名称规范是所有字母都大写(例如PI),如果由多个单词组成,需要通过_进行分隔。原创 2016-11-17 16:56:30 · 310 阅读 · 0 评论 -
继承中的初始化,super和this关键字
继承分为单继承和多继承,在java中,类只能单继承。单继承是指一个类只能有一个父类,多继承是指一个类可以有多个父类。多继承会产生调用的不确定性,然而多继承的好处是可以让子类具有更多的功能。 什么时候定义继承:当事物之间存在所属关系(is a)时,可以通过继承来实现这个关系。 子类可以继承父类中所有的非私有域,但是不能继承私有域,即被private修饰的。...原创 2016-11-16 20:13:03 · 901 阅读 · 0 评论 -
java学习笔记之多线程同步
同步代码块synchronized(对象) //这个对象可以是任意的对象{ 需要被同步的代码}同步代码块解决多线程安全问题的原理:对象可以看做是一个锁,线程1进入执行被同步的代码的时候带有锁,另一个线程2想要执行的时候会去判断锁,线程1持有锁,因此线程2无法执行被同步的代码,当线程1结束,就释放锁,其他线程才可以执行被同步的代码--------->这是我自己的理解。。。原创 2016-11-24 21:47:37 · 327 阅读 · 0 评论 -
CSDN-Markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2016-12-01 15:39:49 · 219 阅读 · 0 评论