CoreJava学习笔记

来源:互联网 发布:淘宝店怎么看营业额 编辑:程序博客网 时间:2024/04/29 03:25

=====================day03==========================

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

回顾:

1)多态:父类的引用接收子类对象。

2)equals():内容相等,前提重写。(Object中的equals是==)

3)String

4)正则表达式

1.基本类型不能参与面向对象的开发。因为他们不是以对象的形式存在,也没有继承关系。 为此,java提供了8个基本对象的包装类,包装类的主要作用就是用每一个实例来封装一个基本类型数据,

使基本类型数据以对象的形式存在,从而可以参与面向对象的开发。

基本类型 包装类

int java.lang.Integer

char Character

byte Byte

short Short

long Long

float Float

double Double

boolean Boolean

1)java从1.5之后推出了一个新特性:自动拆装箱

A.自动拆箱:可以自动将包装类转换为基本类型

B.自动装箱:可以自动将基本类型转换为包装箱

int a = new Integer(1);//int a = new Integer.intvalue();

Integer aa = 1;//Integer aa = Integer.valueOf(1);

test(a);//test(Integer.valueOf(a));

2)通过包装类我们可以获取,某种基本类型的取值范围

A.包装类支持两个常量:

MAX_VALUE:该基本类型所允许的最大值

MIN_VALUE:最小值

B.包装类还可以将字符串转换成其表示的基本类型数据:

Integer.parseInt(String str)

3)和数字相关的其他类:

BigDecimal:大浮点数

支持四个运算的方法:

BigDecimal add(BigDecimal d)

BigDecimal subtract(BigDecimal d)

BigDecimal multiply(BigDecimal d)

BigDecimal divide(BigDecimal d)

BigInteger:用于描述长整数

2.集合框架:

Collection:所有集合的父接口。

相同的判断:equals

java提供了另一种解决方案,集合框架

Collection:所有集合的父接口

Collection派生了两个子接口:

List:可重复集--相同的对象可以重复添加

Set:不可重复集--相同的对象不可重复添加

相同的判断是依靠元素的equals比较的。

Collection定义的方法:

int size():获取集合的元素个数

boolean add(E e):向集合中添加元素

boolean remove(Object o):删除给定的元素

booleanisEmpty():判断集合是否不含有元素

void clear():清除集合中所有元素

boolean contains(Object o):集合中是否含有给定元素

booleanaddAll(Collection c):将给定的集合中的所有元素添加到当前集合中

booleanremoveAll(Collection c)删除当前集合中与给定集合相同的元素(删除交集)

2.时间间的转换:

public static void main(String[] args) throws ParseException {

//显示当前时间

Date date = new Date();

System.out.println(date);//Thu Mar 20 10:42:47 CST 2014

/**

* SimpleDateFormat

* 用于在字符串与日期间相互转换

* Date==>SimpleDateFormat==>String

* String==>SimpleDateFormat==>Date

* 两者之间转化的桥梁是日期格式字符串

* E:星期

* HH:24小时制

* hh:12小时制

*/

SimpleDateFormatfmt = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss E"); System.out.println(fmt.format(date));//输出字符串2014-03-20 10:56:48 星期四


/** * String==>SimpleDateFormat==>Date * parse():将字符串转成Date型的 */ String dateStr = "11-25-2012"; SimpleDateFormat fmt2 = new SimpleDateFormat("MM-dd-yyyy"); Date date2 = fmt2.parse(dateStr); System.out.println(date2);//Sun Nov 25 00:00:00 CST 2012 /** * Calendar * 操作时间:加减年月等 * 加8区 * set(),get(),setTime(),getTime(),add() * Date==>Calendar用Calendar.setTime() * Calendar==>Date用Calendar.getTime() * DAY_OF_YEAR * DAY_OF_MONTH * DAY_OF_WEEK * DATE==DAY_OF_MONTH */ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 32);//自动跳到下个月 System.out.println(calendar.getTime());//Tue Apr 01 11:10:20 CST 2014 calendar.set(Calendar.MONTH, 8); int month = calendar.get(Calendar.MONTH); System.out.println("现在是"+(month+1)+"月"); //计算天,是年中的天 calendar.add(Calendar.DAY_OF_YEAR, 1);

System.out.println(calendar.getTime());//获取的是Date型的时间

}

3.正则表达式:

1)正则表达式在验证字符串时只关注格式是否正确,不关心内容是否有效

* 测试正则表达式的相关功能

* @author tarena

* javadoc:解释器

* 在类、常量、方法中加文档注释

2)public static void main(String[] args) {

/**

* [123]:一个

* fancq@tarean.com.cn

* \w+@\w+(\.com|\.cn|\.com\.cn)


} * \w:在字符串中Java编译器认为w不需要转义,写成\\w */ String regex = "\\w+@\\w+(\\.com|\\.cn|\\.com\\.cn)"; String mail = "fancq@tarena.com.cn"; System.out.println("是否是有邮箱:"+mail.matches(regex)); /** * 拆分字符串 * String[] split(String regex) * . :点在正则表达式中有特殊含义 */ String imgName = "123.jpg"; String[] names = imgName.split("\\."); long d = System.currentTimeMillis(); String newName = d+"."+names[1]; System.out.println(newName); /** * parseInt()方法用于将数字字符串转成int型 */ String s = "66"; int a = Integer.parseInt(s); System.out.println("a="+a);//a=66 /** * 替换 * replaceAll(String Regex,String "") * 在客户端 */ regex = "SB|2B|MB|NND"; String info = "你个SB,怎么能这么2B,NND"; info = info.replaceAll(regex, "***"); System.out.println(info);


=====================day04==========================

包装类:让基本类型参与面向对象开发

Integer一个字节内缓存

valueOf:基本类型-->包装类

parseInt/parseDouble:String-->基本类型(String必须是要转的类型数据)

BigDecimal/BigInteger:add()/subtract()/multiply()/divide(除数,小数位,舍入方式)

集合:

Collection接口:

List:可重复集子接口,允许通过下标操作集合元素。

Set:不可重复集

List有两个常用的实现类:

ArrayList: 底层是依靠对象数组实现的

LinkedList: 底层是靠链表实现的

1.List接口

2个实现类:

1)ArrayList:底层是依靠对象数组实现的;查询效率高,增删效率低

2)LinkedList:底层是靠链表实现的;增删效率高,查询效率低

list提供的一些“独有”方法:add和remove方法

E get(int index):获取当前集合中给定下标所对应位置上的元素。相当于调用数组的:array[1] E set(intindex,E e):将给定的元素存入集合中给定下标位置。。。。返回被替换的

E remove(int index):删除指定位置的元素

void add(intindex,E e):向集合指定位置插入元素

2.ArrayList类

3.泛型

java1.5之后出现的一个新特性。

可以在使用某个类的某个实例时,动态指定其属性,方法的参数,返回值的类型。

一般使用一个大写字母,必须是引用类型。有多个:用,隔开

集合也支持泛型,泛型在集合中的作用是约束集合元素类型。

4.


1.5之后推出了新循环,也叫增强for循环。

新循环只用来遍历集合或数组。

foreach()

语法:

for(element_type e : array|Collection){

//循环体

}

次数由数组长度或集合size决定的。所以新循环不适用传统循环的需求。

新循环不关心循环次数。

Java的新循环是用"迭代器"实现的。

5.数据结构中的队列和栈

1)队列:用于保存一组数据。但是对存取元素有严格要求,要求元素存取遵循先进先出原则。(FIFO)

Queue接口:队列的接口。

存取频繁

LinkedList:可以保存一组数据,又具有增删效率高的特点,所以其作为队列实现是一种很好的解决方案。

Java免费学习资料直播公开课群:175161984


原创粉丝点击