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的对象。
- static Map<String,String> getenv():返回一个不能修改的当前系统环境的字符串映射视图。
- static String getenv(String name):获取指定的环境变量值。
- static Properties getProperties():确定当前的系统属性。(结合框架)
- static String getProperty(String key):获取指定键指示的系统属性。
- static long currentTimesMills():返回以毫秒为单位的当前时间。//用来测试软件的性能
runtime类(系统运行类):代表java程序的运行时环境,每个java程序都有一个与之对应的runtime实例,应用程序通过该对象与其运行时环境相连。
3.常用类
object类:所有类、数组、枚举类的父类,java允许把任何类型的对象赋给object类型的变量。
- boolean equals(Object obj):判断指定对象与该对象是否相等。
- protected void finalize():当系统中没有引用变量指向该对象时,垃圾回收器调用此方法来清理该对象占用的资源。
- Class<?> getclass():返回该对象的运行时类。
- int hashCode():返回该对象的hashCode值
- String toString():返回该对象的字符串表示。
- Clone:浅克隆,需要实现cloneable接口。
String、StringBuffer、StringBuilder类:
String类是不可变类,一旦一个String对象创建,包含在这个对象中的字符序列是不可改变的。String类的底层结构是char类型的数组value,而这个数组使用final进行修饰。
StringBuffer代表一个字符序列可变的字符串,当一个StringBuffer被创建后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串的字符序列。
Stringbuilder也代表了字符串对象,与Stringbuffer类似,两个类的构造器和方法基本相同。不同的是StringBuffer是线程安全的,StringBuilder没有实现线程安全。所以通常情况下优先考虑使用StringBuffer。
String构造器:
- String():创建一个包含0个字符串序列的String对象。
- String(byte[] bytes,Charset charset):使用指定的字符集将指定的byte[]数组解码成一个新的String对象。解决中文乱码
- String(String original):根据字符串常量来创建一个String对象。也就是说新创建的String对象是该参数字符串的副本。
String类提供操作字符串对象的方法:
- char charAt(int index):获取字符串中指定位置的字符。
- int compareTo(String anotherString):比较两个字符串大小,如果两个字符串的字符序列相等,则返回0,不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差。如果较长的字符串的前面部分与较短的字符串一样,则返回他们的长度差。
- String concat(String str):将该String对象与str连接在一起。与Java提供的字符串连接运算符“+”相同。
- boolean contentEquals(StringBuffer sb):将该String对象与StringBuffer对象sb进行比较,当他们包含的字符序列相同时返回true。
- static String copyValueOf(char[] data):将字符数组组成一个字符串,与构造器String(char[] content)功能相同。
- boolean equals(Object anObject):将该字符串与指定对象进行比较,如果二者包含序列相等则返回true,否则返回false。
- int indexOf(int ch):找出ch字符在该字符串中第一次出现的索引位置。
- int lastIndexOf(int ch):找出ch字符在该字符串中最后一次出现的位置。
- int length():返回当前字符串的长度。
- String replace(char oldChar,char newChar):将字符串中的所有的oldChar替换成newChar。
- char[] toCharArray():将该字符串对象转换成字符数组。
- String toLowerCase():将字符串转换成小写。
- String toUpperCase():将字符串转换成大写。
- String[] split(String reg):将字符串按照指定的正则表达式进行拆分。
- String subString(int index):从指定的索引的位置开始直到字符串结束位置,将其作为字符串进行返回。
String的equals方法和object的equals方法之间的关系:
String的equals方法重写了object的equals方法:如果两个String对象的内存地址相同,则return true;如果两个String对下昂的内存地址不相同,则进行判断,如果不是String类型返回false,如果是String类型则向下类型转换,转换成String类型,然后改变char类型数组,比较两个数组对应位置上的内容是否相同,如果相同返回true,不同返回false。
Math类:
- static abs(Xxx xx):将基本数据类型转换成其绝对值返回。
- static max(Xxx a,Xxx b):返回两个值中较大的一个
- static min(Xxx a,Xxx b):返回两个值中较小的一个
- static pow(double a,double b):返回第一个参数的第二个参数次幂的值。
- static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
Random类:用于生成一个随机数。
- Xxx nextXxx(Xxx xxx):返回该类型的一个随机数。
Bigdecimal类:
double、float浮点数在进行数据基本运算时会发生数据丢失现象。BIgdecimal用来处理数据基本运算发生的数据丢失问题。 BigDecimal类提供了add()、subtract()、multiply()、divide()、pow()、等方法对精确浮点数进行常规算术运算。
4.日期处理类
Date类:用来处理日期、时间。
- Date():生成一个以系统当前时间日期为准的Date对象。精确到毫秒
- Date(Long):根据指定的long类型数生成一个Data对象。
- boolean after(Date when):判断日期是否在指定的日期when之后
- boolean before(Date when):判断日期是否在指定的日期when之前。
- int compareTo(Date antherDate)“后”:比较两个日期大小,后面时间大于前面时间返回-1,否则返回1.
- Boolean equals(Object obj):两个时间表示同一时间是返回true
- long getTiem():返回该对象对应long型整数
- void setTime(long time):设置该对象的时间。
Calender类:抽象类,用于表示日历。calender类不能直接创建,可以根据类方法创建calender的子类。Java本身提供了GregorianCalendar类,通过getInstance()方法返回默认时区和语言环境获得一个日历。calender和Date之间可以互相转换。
- void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- int get(int field):返回指定日历字段的值。
- int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。
- int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。
- void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。
- void set(int field,int value):将给定的日历字段设置为给定值。
DateFormat:是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例。
- getDateInstance():返回一个日期格式器,只对日期进行格式化。
- getTimeInstance():返回一个时间格式器,只对时间进行格式化。
- getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。
- getInstance():返回一个默认的系统相关的日期、时间格式器。
SimpleDateFormat:是DateFormat的子类,是一种更简单的日期格式。以我们制定的格式对日期进行格式化。
时间和字符串转化:
//字符串转日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse("1990-3-3");
//日期转字符串
Date date = new Date();
sdf.format(date);
5.正则表达式
一种强大的字符串处理工具,可以对字符串进行查找、提取、分割替换等操作。
- boolean matches(String regex):判断该字符串是否匹配指定的正则表达式。
- String replaceFirst(String regex,String replacement):将该字符串中第一个匹配regex的子串替换成replacement。
- String[] split(String regex):将regex作为分隔符将字符串拆分字符数组。
创建正则表达式:
字符 | 解释 |
\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一样,也是不可变类,可提供多个并发线程安全使用。
- find():返回目标字符串是否包含于Pattern匹配的子串。
- matches():返回整个目标字符串与Pattern是否匹配。
- reset(String newStr):将现有的Matcher对象重新应用于一个新的newStr对象。
- lookingAt():返回目标字符串是否以Pattern开头。
6.国际化与格式化
Java程序的国际化思路是将程序中的标签、提示等信息放在资源文件中,程序需要支持哪些国家、语言环境,就对应提供相应的资源文件。
Java的国际化主要由三个类来完成:
- java.util.ResourceBundle:用于加载国家、语言资源包
- java.util.Locale:用于封装特定的国家/区域、语言环境。
- java.text.MessageFormat:用于格式化带占位符的字符串。
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:可以在不存在的目录中创建文件夹。