JAVA基础
文章平均质量分 69
更好的自己520
这个作者很懒,什么都没留下…
展开
-
SimpleDateFormat类和Random类
SimpleDateFormat SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题SimpleDateForma原创 2017-09-05 12:07:58 · 188 阅读 · 0 评论 -
Date和Calendar类的使用方法(一)
Date和Calendar是Java类库里提供对时间进行处理的类。 Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的功能都已移植到另外一个类里面,这就是今天要讲到的第二个类Calendar里面。在讲两个类之前,这里又不能不多提一个类,那就是Dat原创 2017-10-14 09:38:07 · 905 阅读 · 0 评论 -
Date和Calendar类的使用方法(二)
DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat。 SimpleDateFromat(String pattern) 给定模式 yyyy-MM-dd HH:mm:ss 日期和字符串的转换 a:Date -- String format() 格式化 b:Strin原创 2017-10-14 09:55:39 · 218 阅读 · 0 评论 -
常见类之Random类
Random类(java.util) Random类产生随机数的算法是一种伪随机算法,在进行产生随机数时,随机算法通过起源数字(seed)或叫种子数进行一系列的变换,产生随机数。所以相同种子数在相同次数产生的随机数是相同的。构造方法 (1)public Random() 该构造方法会使用系统当前时间的相关数字作为产生随机数的种子数并利用该种子数产生随机数; (2)public Random(原创 2017-10-14 10:18:41 · 520 阅读 · 0 评论 -
正则表达式总结(一)元字符
正则是匹配特定格式文本的一种模式。正则表达式为匹配文本的一组标记符,说白了,就是一些字符(元字符),匹配了多少次(重复),在哪里(位置)匹配的范式。 有几个关键字:元字符,重复,位置一句话:对于以元字符转为大写为最反义,字符组中加“^”取反义,元字符本身需转义 反义 有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义: 字符转义原创 2017-10-14 10:57:02 · 198 阅读 · 0 评论 -
正则表达式总结(二)重复
一句话:当重复后加一个?号,即表示为懒惰匹配,默认为贪婪匹配 贪婪与懒惰 当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出原创 2017-10-14 11:05:44 · 846 阅读 · 0 评论 -
正则表达式总结(三):位置
一句话:只断言(判断)位置,不去匹配,只定位就像"^","$"。(?<=exp)exp2(?=exp3) 匹配以exp开始,以exp3结束的exp2部份。 比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分)(?<!exp) exp2 (?!exp3)这个相反喽。零宽断言 何为断言:断言某个位置会出现,或不会出现某个模式,但不去匹配这个模式。当断言不成功时,不原创 2017-10-14 11:12:10 · 712 阅读 · 0 评论 -
正则表达式总结(四)
常见的等 正则表达式难,有很在一部份原因是因为同一种匹配有多部写法,以下为常见的相等\d = [0-9]+={1,}*={0,}?={0,1}\D=[^0-9]\w=[A-Za-z_0-9]从字符说开来 1 “ ^ ” 起始位置 取反 如[^abc] 2 “ ? ” 当在元字符后时,表示匹配0到1次,即可选的,区别与+(1,无穷),*(0,无穷) 在贪婪与懒原创 2017-10-14 11:16:40 · 157 阅读 · 0 评论 -
正则表达式总结(五)
后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。呃……其实,组号分配还不像我刚说得那么简单:分组0对应整个正则表达式 实际上组号分配过程是要从左向右扫描两遍的:第一遍只给未命名组分配,第二原创 2017-10-14 11:25:28 · 217 阅读 · 0 评论 -
正则表达式常用类
主要用到的类就是Pattern和Matcher。Pattern用于编译你编写的表达式。public final class Pattern implements java.io.SerializableMatcher类用于对Pattern编译的表达式进行匹配。public final class Matcher implements MatchResultMatchResult接口表示匹配操作的结果转载 2017-10-14 14:29:43 · 348 阅读 · 0 评论 -
正则表达式的常用案例
public class Test{ public static void main(String args[]) { String str="@Shang Hai Hong Qiao Fei Ji Chang"; boolean rs = false; for(int i=0;i<str.length();i++){原创 2017-10-14 14:47:52 · 342 阅读 · 0 评论 -
常用类之StringTokenizer类
StringTokenizer类属于java.util包。 功能介绍:String类使用split()方法运用正则表达式分解字符串,而StringTokenizer类的对象可以直接分解字符串。 有时需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。 当分析一个字符串并将字符串分解成可被独立使用的单词时,可以用StringTokenizer类。StringTokenizer 字转载 2017-10-15 09:10:38 · 717 阅读 · 0 评论 -
JAVA基础之String类的介绍
String类deep两种实例化方法 1、直接赋值 例:String str = “hello”; 直接赋值实际上就是相当于一个匿名对象(“hello”)设置了一个名字(str),String类的匿名对象是由系统自动生成,不在由用户自己创建,产生了匿名对象就一定在堆内存在开辟了一块堆内存空间,并且由一块栈内存指向这块堆内存 public class StringDemo {原创 2017-08-22 16:48:55 · 251 阅读 · 0 评论 -
Scanner类和BufferedReader类的区别
Scanner类在Java SE 6中,可以使用Scanner类取得用户的输入,Scanner类位于java.util包中,如果你要使用Scanner取得用户输入的话,要加上 import java.util.Scanner;这条语句.import的功能是告诉编译器,你将使用java.util包中的Scanner类. Scanner sc=new Scanner(System.in); n原创 2017-09-01 18:59:53 · 489 阅读 · 0 评论 -
String类,StringBuffer类和StringBuilder类区别
三者在执行速度方面的比较:StringBuilder > StringBuffer > String String <(StringBuffer,StringBuilder)的原因 String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量从上面的名字可以看到,String是“字符创常量”,也就是不可原创 2017-09-01 19:49:18 · 497 阅读 · 0 评论 -
synchronized关键字
顾名思义是用于同步互斥的作用的。 使用方法以及意义:1.当synchronized修饰this或非静态方法或是一个实例的时候,所同步的锁是加在this或者实例对象引用上面的。比如a,b同为Main类的实例化对象,a调用被同步的方法,和b调用被同步的方法,没有形成互斥。但是不同线程的a对象调用被同步的方法就被互斥了。 public synchronized void method(){原创 2017-10-06 14:17:03 · 207 阅读 · 0 评论 -
BufferedReader的read()和readLine()区别
从一个有若干行deep文件中依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外首字符丢失的现象String str = null;br=new BufferedReader(new FileReader(fileName));do{str = buf.readLine()); }while(br.read()!=-1);以下用法会使每行都少首字符while(br.read()原创 2017-10-06 12:50:22 · 3469 阅读 · 1 评论 -
堆和栈的区别
堆中存什么?栈中存什么? 堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处:))。 * 为什么不把基本类型放堆中呢?* 因为其占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了,如果把他原创 2017-09-06 08:45:57 · 267 阅读 · 0 评论 -
异常处理
常见异常 RuntimeException ArithmeticException:数学计算异常 NullPointerException:空指针异常 NegativeArraySizeException:负数组长度异常 ArrayOutOfBoundsException:数组索引越界异常 ClassNotFoundException:类文件未找到异常 Cla原创 2017-09-06 11:06:16 · 186 阅读 · 0 评论 -
java序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 * 2.为什么需要序列化与反序列化* 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二原创 2017-09-06 15:54:13 · 272 阅读 · 0 评论 -
封装
1、什么是封装? 封装就是将属性私有化,提供公有的方法访问私有属性。 做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。 如:private String name;public String getName(){ return; }原创 2017-09-10 09:29:44 · 332 阅读 · 0 评论 -
Super与this的区别
super 关键字 super 关键字的用法 访问父类被隐藏的成员变量(private的变量不能访问) super.variable 访问父类中被重写的方法 super.method([paramlist]) 访问父类的构造器 super([paramlist])注意:无论是 super 还是 this,都必须放在构造方法的第一行。thi原创 2017-09-11 15:32:24 · 301 阅读 · 0 评论 -
方法覆盖和方法重载
方法重载和方法覆盖的区别: 方法重载:Overload 方法覆盖:Override 两者本身一点关系都没有,仅仅只是因为名字很像。方法重载:Overload 作用:解决了同一个类中,相同的功能方法名不同的问题,既然是相同的功能,那么方法的名字就应该相同 规则:(两同一不同) 同类中,方法名相同,方法参数列表不同(参数类型、参数个数、参数顺序)方法覆盖:Override 作原创 2017-09-11 16:09:05 · 10307 阅读 · 0 评论 -
抽象类和接口
抽象类abstract class 用关键字abstract修饰的类叫做抽象类,抽象类不能被实例化,即不能new出来一个抽象类的对象(实例)。抽象方法 用abstract关键字所修饰的方法叫做抽象方法。 抽象方法必须定义在抽象类中。 抽象方法有声明,无实现(没有花括号{},有花括号但是内容为空也是一种实现,空实现)。 相对应的有声明有实现的方法可以叫做具原创 2017-09-11 17:04:26 · 167 阅读 · 0 评论 -
匿名内部类
定义: 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 匿名类的语法 1.new 父类构造器(参数列表)|实现接口() 2. { 3. //匿名内部类的类体部分 4. } 这里举一个简单的例子:Runnable hello = new Runna原创 2017-09-11 23:53:09 · 151 阅读 · 0 评论 -
继承
简介 Java中只支持单继承,即每个类只能有一个直接父类.继承表达的是 is a 的关系.在Java中,所有的Java类都直接或间接地继承了java.lang.Object.Object类是所有Java类的祖先.在定义一个类时,如果没有使用extends关键字,那么这个类直接继承Object类.继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类原创 2017-09-03 14:20:43 · 203 阅读 · 0 评论 -
String常用方法(一)
常用的方法 public char charAt(int index) 返回字符串中第index个字符; public int length() 返回字符串的长度; public int indexOf(String str) 返回字符串中第一次出现str的位置; public int indexOf(String str,int fromIndex) 返回字符串从fro原创 2017-10-06 11:10:13 · 277 阅读 · 0 评论 -
String常用方法(二)
常用的方法 public char charAt(int index) 返回字符串中第index个字符; public int length() 返回字符串的长度; public int indexOf(String str) 返回字符串中第一次出现str的位置; public int indexOf(String str,int fromIndex) 返回字符串从fro原创 2017-10-06 11:18:39 · 1744 阅读 · 0 评论 -
数组
概念 同一种类型数据的集合。其实数组就是一个容器。 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。 如果需要存储大量的数据,例如如果需要读取100个数,那么就需要定义100个变量,显然重复写100次代码,是没有太大意义的。如何解决这个问题,Java语言提供了数组(array)的数据结构,是一个容器可以存储相同数据类型的元素,可以将100个数存储到数组中。数组原创 2017-09-02 16:58:23 · 174 阅读 · 0 评论