1.与用户互动
main函数详解:
public修饰符:Java类由JVM调用,为了让JVM可以自由的调用main方法,使用public修饰符使这个方法暴露出来。
static修饰符:JVM调用main方法时,不会创建该主类的对象,而是直接通过该类调用主方法,因此使用static修饰main方法。
void返回值:因为主方法被JVM调用,该方法的返回值返回给JVM,没有意义,所以main方法没有返回值。
使用Java调用该类,会默认调用该类的main方法。在后面没有追加字符串的情况下,打印长度为0。如果调用该方法时传入字符串,如:Java Test hello world。在类名后面追加字符串参数,用空格隔开。这时打印长度为2。
Scanner:基于正则表达式的文本扫描器,可以从文件、输入流、字符串中解析出基本类型值和字符串值。
hasNextXxx():是否还有下一个输入项。
nextXxx():获取下一个输入项。
2.系统相关类
System类:代表当前java程序的运行平台,程序不能创建system的对象。
runtime类(系统运行类):代表java程序的运行时环境,每个java程序都有一个与之对应的runtime实例,应用程序通过该对象与其运行时环境相连。
3.常用类
object类:所有类、数组、枚举类的父类,java允许把任何类型的对象赋给object类型的变量。
String、StringBuffer、StringBuilder类:
String类是不可变类,一旦一个String对象创建,包含在这个对象中的字符序列是不可改变的。String类的底层结构是char类型的数组value,而这个数组使用final进行修饰。
StringBuffer代表一个字符序列可变的字符串,当一个StringBuffer被创建后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串的字符序列。
Stringbuilder也代表了字符串对象,与Stringbuffer类似,两个类的构造器和方法基本相同。不同的是StringBuffer是线程安全的,StringBuilder没有实现线程安全。所以通常情况下优先考虑使用StringBuffer。
String构造器:
String类提供操作字符串对象的方法:
String的equals方法和object的equals方法之间的关系:
String的equals方法重写了object的equals方法:如果两个String对象的内存地址相同,则return true;如果两个String对下昂的内存地址不相同,则进行判断,如果不是String类型返回false,如果是String类型则向下类型转换,转换成String类型,然后改变char类型数组,比较两个数组对应位置上的内容是否相同,如果相同返回true,不同返回false。
Math类:
Random类:用于生成一个随机数。
Bigdecimal类:
double、float浮点数在进行数据基本运算时会发生数据丢失现象。BIgdecimal用来处理数据基本运算发生的数据丢失问题。 BigDecimal类提供了add()、subtract()、multiply()、divide()、pow()、等方法对精确浮点数进行常规算术运算。
4.日期处理类
Date类:用来处理日期、时间。
Calender类:抽象类,用于表示日历。calender类不能直接创建,可以根据类方法创建calender的子类。Java本身提供了GregorianCalendar类,通过getInstance()方法返回默认时区和语言环境获得一个日历。calender和Date之间可以互相转换。
DateFormat:是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例。
SimpleDateFormat:是DateFormat的子类,是一种更简单的日期格式。以我们制定的格式对日期进行格式化。
时间和字符串转化:
//字符串转日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse("1990-3-3");
//日期转字符串
Date date = new Date();
sdf.format(date);
5.正则表达式
一种强大的字符串处理工具,可以对字符串进行查找、提取、分割替换等操作。
创建正则表达式:
字符 |
解释 |
\d |
匹配0-9的所有数字 |
\D |
匹配非数字 |
\s |
匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符 |
\S |
匹配所有非空白字符 |
\w |
匹配所有的单词字符,包括0~9所有的数字、26个英文字母和下画线(_) |
\W |
匹配所有的非单词字符。 |
方扩号 |
解释 |
表示枚举 |
[abc],表示a、b、c其中任意一个字符;[gz]标志g、z中的任意一个字符 |
表示范围:- |
[a-f],表示a到f之间的任意字符,范围可以和枚举结合使用,如:[a-fx-z]匹配a到f或者x到z的任意字符 |
表示求否:^ |
[^a-f],表示非a、b、c、d、e、f的任意字符 |
表示与:&& |
[a-z&&[d-f]],表示a到z与df的集合,d、e或者f [a-z&&[^bc]],a-z所有的字符除了bc之外。 [a-z&&[^d-h]],a-z所有字符除去d-h之间的字符,即a-c和i-z之间的字符 |
表示“并”运算 |
[a-dm-p],即a-d所有的字符和m-p之间的所有字符 |
花括号 |
解释 |
X? |
X表达式出现零次或者一次 |
X* |
X表达式出现零次或者多次 |
X+ |
X表达式出现一次或者多次 |
X{n} |
X表达式出现n次 a{5} aaaaa a只能出现五次 |
X{n,} |
X表达式出现至少n次 |
X{n,m} |
X表达式出现n到m次 |
使用正则表达式:通过pattern和matcher类,matcher类中存放的是匹配的结果,是否匹配。
pattern同String一样,也是不可变类,可提供多个并发线程安全使用。
6.国际化与格式化
Java程序的国际化思路是将程序中的标签、提示等信息放在资源文件中,程序需要支持哪些国家、语言环境,就对应提供相应的资源文件。
Java的国际化主要由三个类来完成:
Java支持绝大部分的国家和语言,如果需要获取Java所支持的国家和语言,则可调用Locale类的getAvailableLocales()方法,该方法返回个Locale数组,该数组包含了Java所支持的国家和语言。
1、mess.propterites mess是自己任意命名的
文件内容为:Hello world = Hello,world!
2、mess_zh_CN.propterties,此文件由native2ascii工具来生成,此工具的作用是将资源文件中的编码转换成系统使用Unicode字符编码。
文件内容为:Hello world = 世界,你好!
命令格式如下:native2ascii mess.properties mess_ zh_CN.properties
7.包装类:
使用包装类的原因:Java语言是面向对象的语言,而Java中的基本数据类型不是面向对象。实际使用中需要将基本数据类型转化成对象,便于操作。
包装类的作用:(1)作为和基本数据类型对象的类类型存在,方便涉及到对象对的操作。(2)包含每种数据类型相关的属性和相关的操作方法。
自动装箱和自动拆箱指将基本数据类型和包装类进行自动的互相转换。
8.file类
file类可以代表一个目录。file类中的mkdir方法:在已存在目录中创建文件夹。mkdirs:可以在不存在的目录中创建文件夹。