常用类
字符串(看API DOC) 包装类(查API) 时间日期类 属性文件类
System Runtime Math→Math.ramdom();
字符串:string:(1 特点;(2 方法
针对String的补充:stringBuffer、stringBuild
字符串的重要性:是所有程序员使用的最多的一种数据类型,在java中使用String表示字符串,固此java堆String有很多特殊处理;
String str = "hello" //String是唯一一个可以用常量赋值的引用数据类型; String str = new String "hello" //String的常量也是一个对象;java堆String常量会在加载期进行预加载,产生到数据段的字符串常量池当中,运行时如果用到某个String常量,只需要从常量池取出即可; System.out.println str ==str0; //Str和Str0都指向常量池当中的那个"hello"常量 //String拥有一个特殊点:叫String对象内容不可变; //导致String在做字符串拼接的时候,会有比较大的消耗,而StringBuffer和StringBuild就是用来解决String内容不可变这个问题的; str = "world" + args[0] + "hello" + str1; System.out.println ( str0 ) ;
java当中专门用重载“+”号操作符,用来实现字符拼接;
在java当中也针对String设计了大量的操作方法;
1、String跟数组相关的方法:
System.out.println ( str.length ); char [ ] array = str.tocharArray( ); //根据下标获取字符出现的位置; System.out.println ( str.indexof '|' ); //返回字符在String中首次出现的位置,如果没有返回-1; System.out.println ( str.lasIndexof '|' ); //返回字符在String中最后出现的位置;
2、String中跟字母有关的方法:
String str3 = str0.touppercase( ); //转全大写; String str3 = str0.tolowercase( ); //转全小写;
"yes".equals Ignore case "yes" 忽略大小写比较相等
"yes".compareTo ("no") 比大小 (字典顺序比较)
compare To Ignprecase; 忽略大小写,比较字典顺序
3、与内容操作相关的:
String str2 = str.srplace ('a','A'); String str2 = str.srplace ('||',' '); //替换 System.out.println ( str.endswith ('lo') ); //判断字符串以什么结尾; System.out.println ( str.endswith ('h') ); //判断字符串以什么开头; String str4 = str.substring (0,3 ); 根据下标位置截取字符串 [开始位置,结束位置) 前后开闭 System.out.println ( str4 ); String str6 = str.concatc "world"; //字符串连接; System.out.println ( str6.containg ("low") ); //判断一个字符串是否是另一个字符串的子串;
4、最重要的三个方法:
★1)trim( )——去掉字符串前后的空格;
Sstring input = " hello world ";
只要接受外部输入的字符串,就应该默认调用一次trim( )去掉字符串前后吴孝的空格,在进行后续操作,养成习惯;
2)split( )——根据制定的分隔符做字符串拆分;
String birthday = "1992-2-14"; String [] values = birthday.split("—"); System.out.println ( calues[0] );
3)matcher( )——正则表达式效验:又叫:regex;
字符串内容的匹配模板
特点:正则表达式本身就是一个字符串;
String regex = "hello"; "8320[0-9]{4}"; "8320([0-9]{4}|110|120|114)";
String in = new Scanner (System.in).next(); if ( in.matcher ( regex ) ) { System.out.println ("匹配"); } else { System.out.println ("NO"); }
符号: [ ] 一个方括号代表一个字符,在内写入内容表达可选则符号;
{ }用来代表正则表达式出现的次数:{m,n}(m表示至少,n表示最多)、{m, }(m表示至少一次,至少)、{m}(m表示只能);
:? 表示前面规则出现 0到1次; + 表示1到多次; * 表示0到多次; (|) 表示分组,|两边任选其一,位数不限;例:(00|0000|000|)
小结:
String: 内容不可变,方法必须熟悉;
StringBuffer/StringBuildr:内容可变;
StringBuffer
StringBuffer类是一个全新类型,与String没有继承关系;
StringBuffer的出现是为了解决String内容不可变的问题,StringBuffer是可变的;
StringBuffer不享受String的特殊语法(+号拼接、自解赋值String常量);
StringBuffer的方法完全没有String丰富,大部分方法都是和拼接或删除有关,需要传入位置下标;
public static main ( String [ ] args ) { StringBuffer sb =new StringBuffer( "hello" ); StringBuffer sb2 = sb.append ( "world"); //StringBuffer字符串末尾做拼接 sb2 = sb2.insert( 5, " "); //StringBuffer在字符串任意位置做拼接, 5 表示位数 System.out.println(sb2);
StringBuilder
StringBuilder类是一个全新类型,与String没有继承关系;
StringBuilder的出现是为了解决String内容不可变的问题,StringBuilder是可变的;
StringBuilder不享受String的特殊语法(+号拼接、自解赋值String常量);
StringBuilder的方法完全没有String丰富,大部分方法都是和拼接或删除有关,需要传入位置下标;
StringBuilder sb0 = new StringBuilder("ByeBye"); StringBuffer sb1 = sb.append("world"); //StringBuffer在字符串末尾做拼接 b1 = sb1.insert(5, " "); //StringBuffer在字符串任意位置做拼接 System.out.println(sb1);
StringBuffer与StringBuilder的区别
先有StringBuffer,后有StringBuilder;
StringBuffer线程安全,性能低;
StringBuilder线程单一并且不安全,性能高;
凡是线程安全的、性能低;线程不安全的、性能高;
包装类:
8个包装类各自对应基本数据类型:
包装类 | 基本数据类型 |
Integer | int |
Character | char |
Byte | byte |
Short | short |
Boolean | boolean |
Long | long |
Float | float |
Double | bouble |
包装类的作用:
1、丰富了基本数据类型只能存放值的问题,还可以提供大量的方法或常量;
2、包装类充当了基本数据类型和引用数据类型的桥梁;
应用层面:必须掌握基本数据类、包装类型和String类型三者的任意转换;
1:基本和包装类之间的转换:
1-1、基本转包装:
public static void main (String [ ] args ) { int a = 100; Integer in = new Integer (a); //标准做法 in = 25; //自动封箱———JDK1.5以后提供
1-2、包装转基本:
Integer in = 300; int b = in.intValue(); //标准做法 b = in; //自动拆箱———JDK1.5以后提供
2:包装和String之间转换:
2-1、String转包装:
String str = "125"; Integer in = new Integer(str);
2-2、包装转String:
Integer in = 325; String str = in.toString(); //标准做法 String str1 = in + ""; //其实本质还是在调用in的toString方法
3:String和基本类型之间的转换:
3-1、String转基本:
String str = "275"; int i = Integer.parseInt(str); //将字符串String转换为基本数据类型
3-2、基本转String
int i = 78; String str = Integer.toString(i); String str1 = i + "" System.out.println(str);
时间和日期类:
定义长度:long(长整数) long time1 = System.currentTimeMillis( ); 从时间原点(1970年1月1日 到现在的毫秒数;)(原时间原点:1900年1月1日)
API中过时是与时间与日期类有关,与其它类无关;
可以通过这个方法获得当前时间的毫秒数:
long now1 = System.currentTimeMillis(); System.out.println(now1);
Date 类用来封装了时间日期:
由于Date这个类出现的较早,经历了时间原点的变迁,以及JDK版本的变迁,所以很多的过时方法;
Date目前的使用场景:1、获取程序运行的当前时间还是用Date最方便;
2、SimpleDateFormat类可以自定义格式化输出日期时间字符串;
3、Date在各版本中都可以使用,因而称为表示时间日期的首选;
Date now = new Date(); //获取当前时间的Date对象 now = new Date(0L); //根据传入的long类型毫秒数表示时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 a hh:mm:ss:SSS E"); String msg = sdf.format(now); System.out.println(msg);
Date短处:1、根据制定的年月日时分秒来设置对象的值———方法已经过时;
2、难于取出时间日期的一部分(比如年、月)进行单独的时间运算;
解决方案:使用Calengdar这个替代进行操作;
Calengdar类———日历类
Calendar cal = Calendar.getInstance();//使用设计模式帮助我们直接获取到Calendar的子类对象,里面对应的就是当前日期时间 int year = 1992; int month = 2; int date = 14; cal.set(year, month - 1, date); // Calendar ---> Date // Date birthday = cal.getTime(); Date birthday = new Date(cal.getTimeInMillis()); String dayOfWeek = new SimpleDateFormat("E").format(birthday); System.out.println(dayOfWeek);
Properties
Properties:集合类;操作文件
映射结构:键(kay)———值(value) 键值对(kv对)
Properties是一个集合类,以键值的方式存放数据;同时兼具可以操作属性文件(一种特殊的文本文件);
首先讨论作为集合类如何用Properties:
Properties props = new Properties();//首先产生Properties集合容器 props.setProperty("J134001", "chenGuo");//调用setProperty方法放入元素,每个元素都是一对键值对 props.setProperty("J134002", "张鹏");//第一个参数是键,要求不能重复 props.setProperty("J134003", "张凯");//第二个参数是值 props.setProperty("J134003", "罗一修");//如果出现放入重复值的情况,相当于修改而不是新增 String name = props.getProperty("J134001");//通过键取集合中的值,如果键不存在则返回null System.out.println(name); props.remove("J134002");//根据键删除整个键值对 System.out.println(props.getProperty("J134002")); int size = props.size();//获得容器中的元素个数
接下来讨论Properties如何操作文件:
Properties操作的文件必须是固定格式的文本文件———属性文件———将是工作中使用率排名第二的配置文件
//存文件 try {
props.store(newFileOutputStream("file/student.properties"), "");//下划线表示文本文件的存储格式 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
//读文件
Properties newProps = new Properties();
try {
newProps.load(new FileInputStream("file/student.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(newProps.getProperty("J134001"));
System.out.println(newProps.size());