java基础知识(三)

junit:java unit java的单元测试
junit是一个大家公认的且广泛使用的测试框架
测试的功能是有junit测试框架提供的,要使用这个框架
就需要引入框架的支持(支撑)jar包

单元测试版本分为:
junit 3
junit 4
junit 5
单元测试中一个名词 “断言” “assert”
断 :断定
言 :动词,表达的意思
名词,话语或语言的意思
断言:能够清晰准确的表达一个结果是正确
junit3:
测试类放在test源代码文件夹中(source folder)
测试类必须继承自TestCase类
junit.framework.TestCase
测试类中的方法名称必须以test开头
比如 public void testMethod(){}
测试类中重写protected void setUp()throws Exception
此方法是在执行任何一个测试方法的时候都要先调用setUp方法
setUP方法适合在执行测试方法前做一些初始化工作
junit4:
测试类方在test源代码文件中,测试不需要继承任何类
在测试方法的前面添加一个注解@Test,测试方法的命名任意
但建议还是以test开头

如果在某个方法的前面添加一个注解@Before,那么此方法就在
任何测试方法执行前执行,一般做初始化工作

常用的api:
-java.lang.Object
-java.lang.String
-java.lang.StringBuffer
-java.lang.StringBuilder
-java.lang.Integer 等封装类,每一个基本数据类型,都对应一个封装类
-日期类

Object类:
是所有类的根类,此类中放置了一些常用api方法,这些api方法
是所有类都需要使用的
-getClass() 获取指定的对象的Class类型的对象
-equals(Object) 判断相等的方法
-toString() 输出对象的类型+@地址
如果两个对象的地址值相同,说明这个对象
是一个对象,只占用一份空间,有两个引用名
这两个引用名都指向一个地址
输出一个对象,相当于调用对象的toString();
System.out.println(xxx);
等同于
System.out.println(xxx.toString());
-finalize() 在gc收集对象之前会自动调用finalize方法
在此方法中可以写自定义的对象的释放原则
应该是某个类重写finalize方法,只能在gc
收集这个类的对象的时候才会调用
程序员是无法掌控何时gc,所以就无法掌控
finalize方法在何时调用
final和finally和finalize的区别
final关键字:
修饰在成员变量和局部变量,这个量就常量
修饰在方法上,方法是不能被重写
修饰在类上,类不能被继承
finally关键字:
必须应用在异常机制上(try catch finally)
无论是否有异常,都会执行finally
用来释放try块中申请的内存空间,也可以释放try块前
申请的内存空间 一般情况下就是用
对象=null; 把对象的引用(地址)从栈中消除(弹出)
gc扫描的就是没有引用的对象
finalize方法,是Object类中方法,用来指定内存释放原则
在gc执行前会调用finalze方法

String类:
-java.lang.String 使用的final修饰符,不能被继承
-字符串底层封装了字符数组以及针对字符数组的操作算法
-字符串一旦创建,对象永远无法更改,但字符串的引用可以重新赋值
-java字符串采用Unicode编码,比如\u9999
String常量池
-java为了提高性能,静态的字符串(字面量,常量)在常量池中创建
并尽量使用同一个对象,重用静态字符串
-对于重复出现的字符串,jvm会首先在常量池中查找
如果存在就返回该对象
比如:
String str1=“abc”;//abc字符串放置到常量池中,在栈中的引用是str1
再另一作用域中
String str2=“abc”;//abc去常量池中寻找是否是abc,有就str2也执行"abc"
indexOf方法 用于实现在字符串中检索另外一个字符串(从前往后找)
-int indexOf(String str)在字符串中检索str,返回第一次出现的位置
如果没有找到就返回-1;
-int indexOf(String str,int fromIndex);
从字符串的fromIndex的位置开始搜索
lastIndexOf方法用于从字符串中检索另一个字符串,从后往前找
但找到的位置还是从前面的索引0开始计数
-int lastIndexOf(String str);
-int lastIndexOf(String str,int fromIndex)

indexOf和lastIndexOf 返回的结果都是找字符串的索引位置
没有找到就返回-1

subString方法用于返回一个字符串的子字符串
-String subString(int beginIndex,int endIndex)
返回字符串中从下标beginIndex(包括)开始
到endIndex(不包括)结束的字符串
-String subString(int beginIndex)
从beginIndex开始到整个字符串的结束

trim方法用于去掉字符串两边的空格
String trim();

charAt方法
char charAt(int index)
返回的字符串指定位置的字符
如果位置超出范围会报
StringIndexOutBoundException
startWith方法 检测一个字符串是否以指定的字符串开头
boolean startsWith(String str)
endsWith方法 检测一个字符串是否以指定的字符串结尾
boolean endsWith(String str)

toUpperCase方法 转换字符串中的所有字符为大写
toLowerCase方法 转换字符串中的所有字符为小写

valueOf方法 将其他类型转换为字符串类型 (静态方法)

split方法 根据指定的规则,拆分字符串
String[] split(String str);

equals方法 判断的是两个字符串的内容是否相同
equalsIgnoreCase 判断两个字符串的内容是否相同,忽略大小写

StringBuilder类
封装的是可变字符串,对象创建后可以通过调用本类的api方法
改变其封装的字符串序列

StringBuilder append(String str); 追加字符串
StringBuilder insert(int destOffset,String s);在指定位置上出入字符串
StringBuilder delete(int start,int end)删除指定开始和结束的中间字符串(包头不包尾)
StringBuilder replace(int start,int end,String str)替换
StringBuilder reverse();字符串翻转

方法链:
因为上面的方法的返回值是StringBuilder类的对象
所有可以使用方法链的方式调用api方法
比如:
StringBuilder sb=new StringBuilder(“abc”);
sb.append(“de”).insert(2,“hahaha”);
结果是:abhahahacde

StringBuffer类
StringBuffer类跟StringBuilder类的用法基本相同

String StringBuffer StringBuilder区别:
-String 字符串序列不可变 里边的字符数组是final
-StringBuilder和StringBuffer都是字符串序列可改变
-StringBuiler线程不安全, 异步,速度快
-StringBuffer线程安全,同步,速度慢
-如果频繁的对字符的内容做增删改操作
首先StringBuilder或StringBuffer
-如果字符串内容不改变,首选用String

正则表达式:
正则表达式就是记录文本规则的代码
比如:
[a-z] 表示a到z的任意一个字符
[a-z]+ 表示1个或多个a-z的字符组成的字符串

字符集合:
[abc] a,b,c中任意一个
[^abc] 除了a,b,c的任意一个字符
[a-z] a-z中任意一个字符
[a-zA-Z0-9] a-z,A-Z,0-9中任意一个字符
[a-z&&[^bc]] a-z中除了b,c以外的任意一个字符

预定义字符集
. 任意一个字符
\d 任意一个数字字符 相当于[0-9]
\w 单词字符 相当于[a-zA-Z0-9_]
\s 空白字符[\t\n\r\f]
\D 非数字字符
\W 非单词字符
\S 非空白字符

数量词:
X? 表示0个或一个X
X* 表示0个或任意多个X
X+ 表示1个到任意多个X (大于等于1个X)
X{n} 表示n个X n代表一个数字
X{n,} 表示n个X到任意多个X (大于等于n个X)
X{n,m} 表示n个到m个X

比如:定义6位数组
[0-9][0-9][0-9][0-9][0-9][0-9]
\d\d\d\d\d\d
\d{6}

分组 ():
表示分组,可以将一系列正则表达式看做是一个整体
分组是可以使用"|"表示或的关系
比如:
(+86|0086)?\s?\d{11} +8613800138000 +0086 13800138000
(+86|0086)?\s*\d{11} +86 13800138000

便捷匹配:
^ 代表字符串的开始
$ 代表字符串的结束

封装类:
基本数据类型 封装数据类型
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
void(特殊) Void

为什么要有封装类:
8种基本数据类型,给指定的基本数据类型存储完数据,
基本数据类型不能通过方法来操作数据,不是面向对象的操作方式
封装类解决了这个问题,先把数据存储给封装类的对象,
然后通过封装类的对象打点调用方法,通过方法可以对
对象中的数据做各种操作;
基本数据类型是存储在栈区中
封装类的类型的对象是存储在堆区中,而封装类是装载到方法区
比如:
Integer intObj=new Integer(10);
把整型数据转换成字节
byte byteValue=intObj.byteValue();
等同的做法:
int i=10;
byte byteValue=(byte)i;
把整型数据转换成double
double doubleValue=intObj.doubleValue();
等同的做法
int i=10;
double doubleVale=i;

拆箱和装箱:
拆箱:把类类型拆开变成基本数据类型,即把对象中的数据拆开
变成基本数据类型的数据
装箱:把基本数据类型的封装成类类型,把基本数据类型的数据
封装到对象中
比如:
方式一:
Integer i=new Integer(3);//把整型数据3装箱成对象i
int ii=i.intValue();//拆箱
方式二:
Integer k=3;//装箱
int kk=k;//拆箱
方式一的写法在任意jre版本都能使用
方式二的写法只能在jre1.5及以上版本使用,此方式
属于自动装箱和拆箱

数学相关类:
-Math类:
1.Math类是final类
2.构造方法私有,不可以创建对象
3.主要的用法是Math类提供大量的静态方法
通过静态方法操作基本数据类型的数据
4.在计算小数的时候不精确
-BigDecimal类:
1.用于精确计算的类
2.在精确计算的时候要求参数以字符串的方式传入此类的对象
-BigInteger类"
1.用于存储任意大小的整数的类
2.在存储数据的时候最好用字符串的方式传入对象

日期相关类:
-Date类
1.表示日期的类
2.提供很多操作日期的方法,但很多方法被java标记为过时(Deprecated)
-SimpleDateFormat类,是工具类
1.parse方法,将日期的字符串传唤成日期
2.format方法,将日期对象转换为日期字符串
3.在转化的时候可以提供转换格式
-Calendar类:
1.有关于日历相关的类,控制时区
2.提供大量的方法,来操作时间
3.Calendar类是一个抽象类,不能实例化对象
用Calendar calendar=C alendar.getInstance();

总结:用Date对象存储日期的数据
用Calendar操作Date对象中的日期数据
用SimpleDateFormat做Date对象和日期字符串相互转换

集合api:集合框架,把多个对象存储在一起,用集合名称,配合集合
api,操作数据
集合框架的分类:
List集合/数据结构:线性 数据内容无序,但数据的位置是有序的
从零开始
Set集合/数据结构:非线性 数据的内容无序,位置也无序,但内容不能重复
Map集合/数据结构:键值对 若干键值对组织在一起
使用上面的三种集合:
1.集合的初始有一个固定的大小,随着往集合中添加数据
集合的空间不够,那么集合会自动扩容
2.可以给集合存储若干数据
3.给集合存完数据后,就可以操作集合的数据
-List:
查找:有位置下标数据,查找快
没有位置下标,查找速度不一定
增加:增加到集合的末尾,追加,快
增加到集合中的某个位置,慢
删除:有位置下标,删除快
修改:
-Set:
查找:查找的慢
增加:慢,保证集合中的对象不能重复
删除:先找后删
修改:
-Map:
查找:有Key数据,查找快
没有Key,查找速度不一定
增加:慢,因为要保证所有的key不能重复
删除:有key,删除快
修改:

集合继承结构:
集合顶级接口:
Collection接口
List接口 List extends Collection
ArrayList类 ArrayList implements List 本质是数组 有下标
LinkedList类 LinkedList implements List
Set接口 Set extends Collection
HashSet类 HashSet implements Set 不重复 且位置无序 不排序
TreeSet类 TreeSet implements Set 不重复且位置无序,但是对象会根据某个对象中的数据进行排序
比如:
TreeSet中存储了10个Student对象,10个对象数据是不能重复的
且这10个对象中的以name为原则进行排序
Map集合顶级接口就Map接口
Map接口
HashMap implements Map 异步 线程不安全,速度快, 可以key为null,value也可以为null
Hashtable implements Map 同步 线程安全,速度慢, key和value都不能为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值