码迷,mamicode.com
首页 > 编程语言 > 详细

java自学之路-day11

时间:2017-07-16 12:40:32      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:包含   检查   sea   返回   抽象   search   大写   创建   解决   

JAVA11

正则表达式

l  概念

  1. 是一个字符串
  2. 满足一定的规则
  3. qq号码检查

[1-9] [0-9] [4,9]

  1. 检查某些字符是否合规 例如 用户名是否合规
  2. 一个[]代表一个或者多个字符
  3. 为了解决String处理一些问题的太复杂

l  匹配规则

  1. 字符x

a)         需要匹配的内容是a

  1. 字符 \\

a)         代表 \

b)         是转义字符

  1. \t 制表符
  2. \n 换行符 新增一空行
  3. \r 回车符 光标到下一行的首部
  4. [abc] 代表一个字符范围
  5. [^abc] 代表取反的一个范围 不是abc就匹配
  6. [a-zA-Z] 任意一个字母
  7. [0-9] 任意一个数字
  8. [a-z A-Z _ 0-9 ] 字母 下划线 和数字都匹配
  9. \d 代表数字 0-9
  10. \w 代表字母 下划线 和数字都匹配
  11. ^ 代表是行的开头

a)         ^[abc][0-9]$ 需要匹配的内容从[abc]这个位置开始 相当于左双引号

  1.     $ 代表是行的结尾

a)         ^[abc][0-9]$ 需要匹配的内容以[0-9]这个位置结束 相当于右双引号

  1. \b 单词边界

需要某个字符两边需要是非单词字符 数字 字母 下划线

  1. X ? 代表 x出现一次或者一次也没有
  2. X * 代表出现零次 或者多次
  3. X + 代表出现一次或者多次
  4. X{n}代表出现n次
  5. X{n,}代表出现至少n次
  6. X{n,m}代表出现至少n次但不超过m次

l  使用

  1. String类的matches

返回值是boolean

“abc”.matches(“[a]”)

  1. String类的方法split

返回值是 String[]

使用规则将字符串进行切割

“abc”.split(“a”);

  1. String类的方法replaceAll

返回值是String

按照规则特换字符串

“abc0123”.reaplceAll(“[\\d]”,”#”)

把所有数字替换为#

  1. “ . ”表示任意字符
  2. “\\d+”    整数
  3. “\\d+\\.\\d+”   正小数
  4. “-\\d+”   负整数
  5. “-\\d+\\.\\d+” 负小数
  6. “\\d+\\.\d{2}” 保留两位小数的正数
  7. “\\d+\\.\d{1,3}” 保留1-3位小数的正数

Date类

l  概述

  1. 表示特定的瞬间 精确到毫秒
  2. 以实现的接口
  3. 已有的子类
  4. 包名是Java.util.Date
  5. 毫秒 1000毫秒=1秒
  6. long time=System.currentTimeMillis();
  7. 返回Long型 因为超过了int的范围
  8. 时间原点 零点 公元1970年1月1日 午夜0:00:00:
  9. 时间和日期的计算 必须依赖毫秒值

l  构造方法

  1. 已过时 从jdk1.1 被日历类取代
  2. 除了 date();  date(long date)
  3. date()输出不是对象地址 说明重写了toString方法

Sat Jul 15 10:58:26 CST 2017 当前操作系统中的时间

  1. date(long date)

传递一个毫秒值

变成和零点相加的日期

  1. Date get set方法

getTime() 将日期转为毫秒值 long time=System.currentTimeMillis()也可以

setTime() 将毫秒值转为日期 构造方法也可以

 

l  日期格式化

  1. DateFormat
  2. 日期格式化的抽象类
  3. java.text包
  4. 抽象方法和非抽象方法都有
  5. SimpleDateFormat子类可以实现抽象方法 可以直接使用非抽象方法
  6. 创建SimpleDateFormat对象

构造方法中写去日期格式

 

 yyyy 年份

MM 月份

dd 月中的天数

HH 0-23小时

mm 小时中的分钟

ss 秒

new SimpleDateFormat("公元yyyy年MM月dd日m分钟ss秒");

汉字可以所以写但字母必须按要求写

然后调用format()方法 返回值是String 参数是一个date

l  String转为date对象

  1. Parse方法
  2. 步骤

a)   创建SimpleDateFormat对象

b)   构造方法指定日期格式

c)   子类对象 调用方法parse 传递String 返回Date

d)   Parse中的字符串日期必须和指定的格式相同

e)   日期不能输入 只能选择

Calendar

l  概念

  1. 替换了date方法
  2. 为抽象类 不能创建对象 需要子类实现
  3. 静态方法 静态变量 YEAR 日历字段
  4. getInstance ()获得子类对象

l  get 获取日历字段的值

get(int)

参数int获取哪个日历字段的具体数值

返回 int值

int year=calendar.get(calendar.YEAR);

年 YEAR

月份 MONTH

天数 DATE_OF_MOUTH

l  set(int field,int value)

设置日历哪个日历字段 具体数值

set(int year,int month,int day)

传递3个整数的年月日

外国月份比国内少一月

l  add(int 字段,int 偏移量)

日历的偏移量可以指定哪个一个日历中的字段,进行整数的偏移

l  getTime() 不常用

将日历对象转为日期对象

练习

l  活了多少年

l  闰年

  1. 将日历指定到3月1日,add偏移一天 29 闰年 28平年

l  Java日历

包装类

概述

  1. 基本类型有八种 数学计算
  2. 基本类型进行复杂操作功能不够 需要扩充
  3. 包装类解决了这个问题
  4. 用户从界面输入的任何数据都是以字符串进行储存
  5. 对这些字符串进行操作只能进行字符串操作 无法转换为基本类型完成运算
  6. Java提供了八种基本类型的包装类

 

每一个类中都封装了一个基本类型 从而来操作更多数据

除了int 是iteger  char是character 其他都是首字母大写

  1. 主要学习integer,其他类和integer类差不多
  2. 在Java.lang包中

特点

l  parseInt(String a)

  1. 在基本数据类型和字符串之间进行切换
  2. parseInt(String a)
  3. 将字符串解析为有符号的int整数
  4. 只能写数字不能加空格

l  parseInt(String s,int radix)

  1. 把其他进制数转换为十进制
  2. 前面的进制数和后面的进制必须相对应
  3. 可以写ABCDEF 16进制

l  将基本类型变为字符串

  1. 数据类型变量+“”
  2. Integer 静态方法 toString
  3. toString(String s,int radix) 以规定进制输出 最高支持36进制 0-9 A-Z

l  构造方法

  1. Integer(String s) 创建一个Interger对象 包含的是字符串
  2. 非静态方法intValue() 返回int类型 将此字符串转为基本数据类型

l  其他方法

  1. 三个方法 和 两个静态的成员变量
  2. MAX_VALUE 基本数据类型取值最大值
  3. MIN_ALUE  基本数据类型取值最小值
  4. toBinarString(int) 十进制转为二进制 返回String
  5. toOctalString(int) 十进制转为八进制     
  6. toHexString(int) 十进制转为十六进制

自动装箱和自动拆箱

l  jdk1.5后

数据类型变为对象 自动装箱

对象中的数据变回基本数据类型 自动拆箱

l  自动装箱

  1. Integer in=1;

        打印后为字符串 1

        例如集合ArrayList<Integer> 可以存储1

  1. In=in+1

In首先in.inValue()转为基本类型

然后in+1

之后in在转为包装类

l  弊端

空指针异常

如果是in是null的话,编译没错但是运行会出错

l  练习

 

 

System类

l  Java.lang 包

l  Final类

l  构造方法私有 外界不能直接建立对象

l  可以用类名访问静态方法

l  方法

  1. currentTimeMills()

a)   获得当前系统时间

b)   可以在程序运行前后各调用一次用来进行统计程序执行时间

  1. exit()

a)   虚拟机退出就会停止运行程序

b)   退出虚拟机

c)   用参数作为状态码 0表示正常终止 1表示异常终止

  1. gc()

a)   回收垃圾

b)   比如匿名对象等

c)   在对象类 重写 finalize()方法可以输出语句

  1. getProperties()

getProperties(String key)

 

a)   获取当前操作系统的属性

b)   返回Properties 集合中的一个类 和ArrayList差不多

c)   输出getProperties()就可以得到所有信息

d)   file.separator 系统的文件位置符号 例如 windows \ unix

是/

  1. arrayCopy

a)   可变数组ArratList StringBuffer的原理都是用了这个

b)   源码 没有

c)   复制替换

d)   是调用windows的本地方法 JVM内存中有一部分是本地方法栈 这方法运行时就是在本地方方法栈中

Math类

概念

l  数学计算的类

l  工具类

l  平方根 对数 指数 三角函数

l  Java.lang包中

l  静态方法

方法

l  static int abs(int i )

  1. 获取参数的绝对值
  2. Math.abs(int a)
  3. 浮点 long都可以

l  static double ceil(double d)

  1. 返回大于或者等于d的最小整数
  2. Math.cell()

 

 

l  static double floor(double d)

  1. 返回小于或者等于d的最大整数
  2. Math.floor()

 

l  static double pow(double a, double a,)

  1. 返回a的b次方
  2. Math.pow(2,3)  2的3次方

l  static double sqrt(double d)

  1. 返回double参数的平方根
  2. 如果是负数-2 会输出Nan
  3. 本地方法

l  static double random(double d)

  1. 来源Random类
  2. 返回一个0.0-1.0之间的一个随机数
  3. 不推荐用

l  static double round(double d)

  1. 获取参数的四舍五入 取整数
  2. 怎么自己实现 +0.5 强转int 在转为double

Arrays工具类

概念

l  包含操作数组的内容

l  Java.Util

l  包括排序 查找

方法

l  static  void sort(数组)

  1. 对数组进行升序排列
  2. 排序算法是经过优化的的快速排序

l  static  int binarySearch(数组,被查找的元素)

  1. 数组的二分搜索法
  2. 返回元素在数组中的出现的索引
  3. 如果元素不存在返回得是 (- 插入点-1)

a)         保证有序放到元素的中

b)         -索引 -1

l  static String toString(数组)

  1. 将数组变为字符串
  2. 并且 有一定格式
  3. 原理 StringBuilder 之前写过的按照一定格式输出数组

练习

l  接收输入存储十个人的成绩

l  将最后三个人存入新的数组

l  返回新的数组

l  程序分析

  1. main方法传过来一个数组
  2. 用sort方法进行排序

 

  1. 新建一个数组
  2. 用arraycopy将传过来的数组的前三个元素复制到新数组
  3. 返回这数组
  4. Main接收这个数组
  5. 用toString输出
  6. 也可以用for循环遍历输出和取出前三个元素 但是比较麻烦

 

BigInteger

概念引入

l  Long型是最大的整数

l  超过long型的基本类型不能表示

l  变为BigInteger的对象

l  实现大数据的运算

l  Java.math

构造方法

l  可以传递 字节数组 整型 有局限性

l  选择传递String 可以表示任意大小的整数

l  BigInteger(String s) 是一个对象

运算

l  可以进行四则运算

  1. 调用方运算
  2. 计算结果只能还是BigInteger对象

l  加法 add(另一个BigInteger对象)

  1. 结果还是一个对象

l  减法  subtract(另一个BigInteger对象)

结果还是一个对象

l  乘法  multiply(另一个BigInteger对象)

结果还是一个对象

l  除法  divied(另一个BigInteger对象)

结果还是一个对象

BigDeciaml

概述

  1. 0.09+0.01=0.09999999999999

l  无限接近0.1

  1.  

 

  1. 原因 计算机计算二进制中表示浮点数不精确
  2. 超级大数浮点运算 提高运算精度
  3. Java.math

构造方法

l  建议用String进行传递参数

l  Int和double 可能回超出 不可预知性

运算

l  加减乘

  1. 加法

a)         add

b)         精确计算

  1. 减法

a)         Subtract

b)         精确计算

  1. 乘法

c)         Multiply

d)         精确计算

  1. 结果

 

 

0.1    0.68    101.5

 

 

l  除法 提现高精度

  1. 除法  divied
  2. 结果

 

1.301/100

0.01301

1.301/101

报异常 无限不循环

  1. 解决办法:重载

 

a)         保留模式

阅读API文档

.ROUND_UP 向上一位加1

.ROUND_DOWN 截断

.ROUND_HALF_UP 四舍五入

.ROUND_HALF_DOWN 四舍(大于0.5五)入

 

java自学之路-day11

标签:包含   检查   sea   返回   抽象   search   大写   创建   解决   

原文地址:http://www.cnblogs.com/DMYMaster/p/7190054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!