codecamp

第9篇-JAVA面向对象-常用类Ⅴ

  • 每篇一句 :巨轮寻深水而航行
  • 初学心得: 没有胆大的猜测就没有伟大的发现
  • (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ]

目录导航

[TOC]

1.JAVA Scanner类

java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入
创建 Scanner 对象的基本语法格式:

Scanner s = new Scanner(System.in);

使用 next 方法代码

import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
//next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if(scan.hasNext()){
String str1 = scan.next();
System.out.println("输入的数据为:"+str1);
}
}
}



使用 nextLine 方法代码

import java.util.Scanner;
public class ScannerDemo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
//nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if(scan.hasNextLine()){
String str2 = scan.nextLine();
System.out.println("输入的数据为:"+str2);
}
}
}

next() 与 nextLine() 区别
(1.)next():
● 1、一定要读取到有效字符后才可以结束输入
● 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
● 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符, next() 不能得到带有空格的字符串
(2).nextLine():
● 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
● 2、可以获得空白

2.JAVA String类

String表示字符串,所谓字符串,就是一连串的字符
String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁
常量池:JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)

创建String字符串格式:

String str = "创建字符串";



String字符串长度:用于获取有关对象的信息的方法称为访问器方法
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数
String字符串长度代码

public class StringDemo {
public static void main(String args[]) {
String str = "A,B,C,D,E,F";
int len = str.length();
System.out.println( "str的长度是 : " + len );
}
}



String连接字符串代码

public class StringDemo3 {
public static void main(String args[]) {
String string1 = "这是:";
System.out.println("1、" + string1 + "连接字符串");
}
}



创建格式化字符串
输出格式化数字可以使用 printf() 和 format() 方法
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出

printf()方法代码:

System.out.printf("浮点型变量的的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);



format() 方法代码:

String str;
fs = String.format("浮点型变量的的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);



JAVA String 方法
下面是是 String 类支持的方法:

| NO. | 方法描述 |
| :-------- | --------:|
| 1 | char charAt(int index)返回指定索引处的 char 值 |
| 2 | int compareTo(Object o)把这个字符串和另一个对象比较 |
| 3 | int compareTo(String anotherString)按字典顺序比较两个字符串 |
| 4 | int compareToIgnoreCase(String str)按字典顺序比较两个字符串,不考虑大小写 |
| 5 | String concat(String str)将指定字符串连接到此字符串的结尾 |
| 6 | boolean contentEquals(StringBuffer sb)当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真 |
| 7 | static String copyValueOf(char[] data)返回指定数组中表示该字符序列的 String |
| 8 | static String copyValueOf(char[] data, int offset, int count)返回指定数组中表示该字符序列的 String |
| 9 | boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束 |
| 10 | boolean equals(Object anObject)将此字符串与指定的对象比较 |
| 11 | boolean equalsIgnoreCase(String anotherString)将此 String 与另一个 String 比较,不考虑大小写 |
| 12 | byte[] getBytes()使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中 |
| 13 | byte[] getBytes(String charsetName)是指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中 |
| 14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)将字符从此字符串复制到目标字符数组 |
| 15 | int hashCode()返回此字符串的哈希码 |
| 16 | int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引 |
| 17 | int indexOf(int ch, int fromIndex)返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索 |
| 18 | int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引 |
| 19 | int indexOf(String str, int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 |
| 20 | String intern()返回字符串对象的规范化表示形式 |
| 21 | int lastIndexOf(int ch)返回指定字符在此字符串中最后一次出现处的索引 |
| 22 | int lastIndexOf(int ch, int fromIndex)返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索 |
| 23 | int lastIndexOf(String str)返回指定子字符串在此字符串中最右边出现处的索引 |
| 24 | int lastIndexOf(String str, int fromIndex)返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 |
| 25 | int length()返回此字符串的长度 |
| 26 | boolean matches(String regex)告知此字符串是否匹配给定的正则表达式 |
| 27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)测试两个字符串区域是否相等 |
| 28 | boolean regionMatches(int toffset, String other, int ooffset, int len)测试两个字符串区域是否相等 |
| 29 | String replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的 |
| 30 | String replaceAll(String regex, String replacement使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串 |
| 31 | String replaceFirst(String regex, String replacement)使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串 |
| 32 | String[] split(String regex)根据给定正则表达式的匹配拆分此字符串 |
| 33 | String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此字符串 |
| 34 | boolean startsWith(String prefix)测试此字符串是否以指定的前缀开始 |
| 35 | boolean startsWith(String prefix, int toffset)测试此字符串从指定索引开始的子字符串是否以指定前缀开始 |
| 36 | CharSequence subSequence(int beginIndex, int endIndex)返回一个新的字符序列,它是此序列的一个子序列 |
| 37 | String substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串 |
| 38 | String substring(int beginIndex, int endIndex)返回一个新字符串,它是此字符串的一个子字符串 |
| 39 | char[] toCharArray()将此字符串转换为一个新的字符数组 |
| 40 | String toLowerCase()使用默认语言环境的规则将此 String 中的所有字符都转换为小写 |
| 41 | String toLowerCase(Locale locale)使用给定 Locale 的规则将此 String 中的所有字符都转换为小写 |
| 42 | String toString()返回此对象本身(它已经是一个字符串) |
| 43 | String toUpperCase()使用默认语言环境的规则将此 String 中的所有字符都转换为大写 |
| 44 | String toUpperCase(Locale locale)使用给定 Locale 的规则将此 String 中的所有字符都转换为大写 |
| 45 | String trim()返回字符串的副本,忽略前导空白和尾部空白 |
| 46 | static String valueOf(primitive data type x)返回给定data type类型x参数的字符串表示形式 |

3.JAVA System 类

System 类包含一些与系统相关的类字段和方法,它不能被实例化,类中所有属性和方法都是static,可直接被System调用
System 类常用方法

static void exit(int status)
//终止虚拟机的运行.对于发生了异常情况而想终止虚拟机的运行,传递一个非0数值,对于正常情况下退出系统传递0值;
//该方法实际调用的是Runtime.getRuntime().exit(int status);
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) //数组拷贝
static long currentTimeMillis() //返回以毫秒为单位的当前时间
String getenv(String name) //获得指定的环境变量;
static void gc() //运行垃圾回收器
实际上调用了 Runtime中的gc()方法;
Runtime.getRuntime().exec("notepad ");
static Properties getProperties() //取得当前的系统属性
static String getProperty(String key) //取得指定键指示的系统属性
static String getProperty(String key, String def) //获取用指定键描述的系统属性,def表示默认信息

4.JAVA StringBuffer & StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类
JAVA StringBuffer 和 StringBuilder 类和 String 类不同的是
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
StringBuilder 类和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类

JAVA StringBuffe代码:

public class Demo4 {
public static void main(String args[]){
StringBuffer sb = new StringBuffer("推荐:");
sb.append("使用");
sb.append("StringBuffer类");
System.out.println(sb);
}
}

StringBuffer: 是线程安全的;
StringBuilder: 是线程不安全的,性能高点,推荐使用StringBuilder
StringBuffer的字符序列是可变的(通过append等方法操作)
StringBuffer 和 String之间的转换;
String toString() 返回此序列中数据的字符串表示形式
StringBuffer(String str):以指定的字符串创建StringBuffer对象

5.JAVA Number & Math 类

1.JAVA Number 类
当需要使用数字的时候,通常使用内置数据类型,如:byte、int、long、double...

在实际开发过程中,经常会遇到需要使用对象,而不是内置数据类型的情形
为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类

JAVA Number类由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包

JAVA Number代码

public class Demo5 {
public static void main(String args[]){
Integer x = 5;
x = x + 10;
System.out.println(x);
}
}





2.JAVA Math 类
JAVA 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数,Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用
JAVA Math代码

public class Test {
public static void main (String []args) {
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的余弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println(Math.PI);
}
}

3.Number & Math 类方法

| NO. | 方法描述 |
| :-------- | --------:|
| 1 | xxxValue()将 Number 对象转换为xxx数据类型的值并返回 |
| 2 | compareTo()将number对象与参数比较 |
| 3 | equals()判断number对象是否与参数相等 |
| 4 | valueOf()返回一个 Number 对象指定的内置数据类型 |
| 5 | toString()以字符串形式返回值 |
| 6 | parseInt()将字符串解析为int类型 |
| 7 | abs()返回参数的绝对值 |
| 8 | ceil()对整形变量向左取整,返回类型为double型 |
| 9 | floor()对整型变量向右取整。返回类型为double类型 |
| 10 | rint()返回与参数最接近的整数。返回类型为double |
| 11 | round()返回一个最接近的int、long型值 |
| 12 | min()返回两个参数中的最小值 |
| 13 | max()返回两个参数中的最大值 |
| 14 | exp()返回自然数底数e的参数次方 |
| 15 | log()返回参数的自然数底数的对数值 |
| 16 | pow()返回第一个参数的第二个参数次方 |
| 17 | sqrt()求参数的算术平方根 |
| 18 | sin()求指定double类型参数的正弦值 |
| 19 | cos()求指定double类型参数的余弦值 |
| 20 | tan()求指定double类型参数的正切值 |
| 21 | asin()求指定double类型参数的反正弦值 |
| 22 | acos()求指定double类型参数的反余弦值 |
| 23 | atan()求指定double类型参数的反正切值 |
| 24 | atan2()将笛卡尔坐标转换为极坐标,并返回极坐标的角度值 |
| 25 | toDegrees()将参数转化为角度 |
| 26 | toRadians()将角度转换为弧度 |
| 27 | random()返回一个随机数 |

6.JAVA Date 类

java.util 包提供了 Date 类来封装当前的日期和时间,Date 类提供两个构造函数来实例化 Date 对象
(1).构造函数使用当前日期和时间来初始化对象
代码:

Date( )

(2).构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数

Date(long millisec)

Date对象创建以后,可以调用下面的方法

| NO. | 方法描述 |
| :-------- | --------:|
| 1 | boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false |
| 2 | boolean before(Date date)若当调用此方法的Date对象在指定日期之前返回true,否则返回false |
| 3 | Object clone( )返回此对象的副本 |
| 4 | int compareTo(Date date)比较当调用此方法的Date对象和指定日期,两者相等时候返回0。调用对象在指定日期之前则返回负数,调用对象在指定日期之后则返回正数 |
| 5 | int compareTo(Object obj)若obj是Date类型则操作等同于compareTo(Date) ,否则它抛出ClassCastException |
| 6 | boolean equals(Object date)当调用此方法的Date对象和指定日期相等时候返回true,否则返回false |
| 7 | long getTime( )返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数 |
| 8 | int hashCode( )返回此对象的哈希码值 |
| 9 | void setTime(long time)用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期 |
| 10 | String toString( )转换Date对象为String表示形式,并返回该字符串 |

获取当前日期时间代码

import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}



使用 SimpleDateFormat 格式化日期代码
java.text.SimpleDateFormat
SimpleDateFormat 是一个与语言环境有关的方式来格式化和解析日期的具体类
它允许进行格式化(日期 -& 文本)、解析(文本 -& 日期)和规范化

import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}


DateFormat 格式化编码:时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母

| 字母 | 描述 | 示例 |
| :-------- | --------:| :------: |
| G | 纪元标记 | AD |
| y | 四位年份 | 2017 |
| M | 月份 | July or 07 |
| d | 一个月的日期 | 10 |
| h | A.M./P.M. (1~12)格式小时 | 12 |
| H | 一天中的小时 (0~23) | 22 |
| m | 分钟数 | 30 |
| s | 秒数 | 35 |
| S | 毫秒数 | 156 |
| E | 星期几 | Tuesday |
| D | 一年中的日子 | 360 |
| F | 一个月中第几周的周几 | 2 (second Wed. in July) |
| w | 一年中第几周 | 40 |
| W | 一个月中第几周 | 1 |
| a | A.M./P.M. 标记 | PM |
| k | 一天中的小时(1~24) | 24 |
| K | A.M./P.M. (0~11)格式小时 | 10 |
| z | 时区 | Eastern Standard Time |
| ' | 文字定界符 | Delimiter |
| " | 单引号 | |

使用printf格式化日期代码

import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用toString()显示日期和时间
String str = String.format("显示时间 : %tc", date );
System.out.printf(str);
}
}


JAVA Calendar

推荐使用处理日期和时间的类Calendar,是抽象类,不能实例化,通过static Calendar getInstance() 获得一个Calendar对象
int get(int field):返回指定日历字段值
静态常量:
YEAR 表示年的字段数字
MONTH 表示月份字段数字,月份范围是[0,11]
DATE 表示一个月中的某天
DAY_OF_MONTH 表示一个月中的某天
DAY_OF_WEEK 表示一个星期中的某天
HOUR_OF_DAY / HOUR 表示第几小时
MINUTE 表示第几分钟
SECOND 表示第几秒


JAVA Calendar常用方法

Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象
void set(int year, int month, int date, int hour, int minute, int second)
设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值
abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
若 amount为负数,则减去一天,若 amount为正数 ,则加上一天

7.JAVA 正则表达式

正则表达式定义了字符串的模式
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别

Pattern类和Matcher类
两个类存在于java.util.regex包中

java.util.regex 包主要包括以下三个类
● Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数
Pattern类常用方法
Pattern类主要是编写正则表达式规范

public static Pattern compile(String regex) //指定正则表达式规则
public Matcher matcher(CharSequence input) //返回Matcher类实例
public String split(Char Sequence input) //字符串拆分

在Pattern类中若要取得Pattern的实例,则调用其compile(String regex)方法


● Matcher 类:
Matcher类主要是执行规范,验证字符串是否符合其规范
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用
Pattern 对象的 matcher 方法来获得一个 Matcher 对象
Matcher类常用方法

public boolean matcher() //执行验证
public String replaceAll(String replacement) //字符串替换


● PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误
PatternSyntaxException代码:

import java.util.regex.*;
class RegexExample1{
public static void main(String args[]){
String content = "I am w3cUser " +
"from w3cschool.cn.";
String pattern = ".*w3cschool.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'w3cschool' 子字符串? " + isMatch);
}
}


常用正则规范

| NO. | 规范 | 描述 |
| :-------- | --------:| :------: |
| 1 | \\ | 表示反斜线(\)字符 |
| 2 | \t | 表示制表符 |
| 3 | \n | 表示换行 |
| 4 | [abc] | 字符a、b或c |
| 5 | [^abc] | 除了a、b、c之外的任意字符 |
| 6 | [a-zA-Z0-9] | 表示由字母、数字组成 |
| 7 | \d | 表示数字 |
| 8 | \D | 表示非数字 |
| 9 | \w | 表示字母、数字、下划线 |
| 10 | \W | 表示非字母、数字、下划线 |
| 11 | \s | 表示所有空白(换行、空格等) |
| 12 | \S | 表示非字母、数字、下划线 |
| 13 | ^ | 行的开头 |
| 14 | $ | 行的结尾 |
| 15 | . | 匹配除换行符之外的任意字符 |

初学(面向对象近阶段) Ⅴ 难点: ★★★★★

希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷

感谢您的阅读 欢迎您的留言与建议

第8篇-JAVA面向对象-设计模式Ⅳ
第10篇-JAVA 集合框架-JAVA 泛型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }