java自学之路-day11

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. 原因 计算机计算二进制中表示浮点数不精确
  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五)入

时间: 2024-10-08 08:43:09

java自学之路-day11的相关文章

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

[转载] JAVA自学之路

原文链接http://blog.csdn.net/mengxin846/article/details/2219844 虽然文章有点旧但还是有些启发的,譬如要事第一,好读书不求甚解. JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当 成学生

马士兵:JAVA自学之路

JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训.决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势.一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的教师和课

Java 自学之路

Java 自学之路 前言 从运行第一个程序开始算起,我接触编程也有三年的时间了.最初是从51单片机入门学习的C语言,班里面的大佬带着我一起做小项目,但是因为没人教,基本靠自学,学得慢,写的代码也烂,很没有章法.后来大三下半学期开始准备考研(从电子跨考计算机),从零开始学习数据结构,这才算是真正地入了编程的门.至于考研,后来就放弃了(别问我为什么放弃,当时脑子抽了),去了一家小公司实习.这家公司主要做机器视觉的项目,当时去面试的时候觉得挺高大上,技术 leader 也挺和蔼,感觉是很务实的一个团队

java自学之路-day17

JAVA17 多线程 进程和线程的概念 进程 l  正在运行中的程序 l  程序存储在硬盘中 当进入内存运行时 l  内存中的每一个程序就叫进程 l  并且每一个进程都有一个独立的功能 线程 l  迅雷中的多线程下载 l  main方法中有很多方法一次排列 如果其中一个方法执行了很多次循环 那么下一个方法就不会执行 从入口main到结束,一条路走到底 必须一个一个的执行 这种程序是单线程程序 效率慢 l  例如 多台电脑网吧上网 多条路通行 线程 概念 l  CPU 中央处理器 inter AW

Java自学之路---DotCom

引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个时代已经发生了变化,我们有强劲的硬件资源.我们有久经考验的框架和源码,我们最宝贵的是花在编码上的时间.所以我决定带着之前C/C++的经验,来认识JAVA是门怎样的语言,以及它的编程理念可以给我带来怎样的好处. 如何学习 和我学习其他语言一样,我主要还是依靠书本,电子书或者是纸质书,这样学习起来才是最

java自学之路-day16

JAVA16 IO流 转换流 引入 l  中文系统默认编码表GBK l  FileWriter的构造方法假定默认编码GBK l  但是一些文本文件有可能是其他编码方式 l  所以引入转换流 可以对编码表进行设定 l  对之后开发互联网程序很重要 概述 l  字符流的一种 l  字符与字节的桥梁 l  继承Writer类 OutputStreamWriter l  Java.io. OutputStreamWriter l  继承Writer类 l  字符输出流 向文本文件写入数据 l  字符流转

java自学之路-day18

数据库 数据库 概念 l  对于一串数据修改其中的一条数据 l  如果用io流就需要全盘读写 然后找到其中的一行 进行修改 l  或者使用数组进行修改 l  这样太复杂 效率慢 所以需要引用数据库 l  数据库本质是一个文件系统 可以看做是一个具有很好的处理数据能力的容器 和集合 数组 都一样 l  里面有严格的数据存储格式 l  数据库管理系统是用一个软件管理数据库 l  常见的数据库管理系统 MYSQL  开源免费 瑞典的公司开发 sun公司收购  Oracle收购了sun MYSQL6.x

java自学之路-day10

JAVA10 Eclipse快捷键补充 l  选中类Ctrl T 继承树 l  Ctrl 或者f3 查看源码 多态会跳转到调用父类中 l  Java中lang包中的所有类 不需要导包 直接用  例如 System String l  Ecplise 中的Jre System Library是默认的eclipse依赖jre的类库 在该位置可以查找到平常使用的String 类 Random类 Math类 l  Jdk 包括 jre和开发工具,jre包括jvm 和运行时所需要的核心类库 l  运行 h