常用类

来源:互联网 发布:mac 显示器校准 编辑:程序博客网 时间:2024/04/30 19:34


1、字符串: 常用字符串属性、方法;
2、包装类与自动装箱,自动拆箱
3、日期类
4、数学类

1、字符串:
(一)
String str = "hello"; str 指向“hello”常量(static)对象,被放在数据段字符串常量池(除此之外还有线程池、);这样提升性能,字符串会大量被使用,因此进行预加载;
String str2 = "hello";
String str1 = new String("hello") ;
String str3 = new String("hello") ;
str1 指向在堆内存中创建的对象“hello”;因此,str1、str3与str不相等;但是str与str2相等;
区分:equal 与 == ; ==对比的是变量中的值; equal对比的是两个对象的内容相同;【equal重写方法在继承中有记录】;
(二)
String str2 = new String(“hello!”) 这里产生了多少个字符串对象(2个-str2和hello'');这里产生了多少个对象(3个+类对象);
(三)
String对象内容不可变:
str0 = str0 + “ world” 则str0 指向了一个新对象“hello world” 原来的hello指向被取消;
String tst = null; //空 没对象,会报空指针异常;
String tst = “”; //空串 有对象,不会报空指针异常;
字符串非空判断,不是空,也不是空串
【案例】if( tst != null && !tst.equal(“”) )顺序不能换;
StringBuffer :
append(“sbsbcd”)方法:仅往字符串后面拼接;
insert(index,“ jsa”)方法:往字符串的制定位置插入;

(四)常用字符串方法属性:
String str = “hello!”
A、跟字符串有关
System.out.println( str.length( ) ); 打印str的字符串长度;
char [] str = array.toCharArray( );把String对象转换成char 数组;
System.out.println( str.lcharAt(5 ) ); 取第几个下标位置的字符;
System.out.println( str.indexOf( ‘e’ ) ); 取某个字母首次出现的下标,没出现返回-1;
System.out.println( str.lastIndexOf( ‘e’ ) );得到某个字符最后一次出现的位置的第一个字符位置下标;没有返回-1;
B、跟字母有关:
System.out.println( str.toUpperCase( ) ); 得到一个新的全大写的STR内容的新字符串;
System.out.println( str.toLowerCase( ) ); 得到一个新的全小写的STR内容的新字符串;
System.out.println( “HEllo”.equalsIgnoreCase (str ) ); 忽略(Ignore)大小写进行比较,
System.out.println( “hEllo”.compareTo (“hello”) );进行字典顺序比较,得到第一个不同的Aism值的差值,每个相同则比较长度差;
System.out.println( “hEllo”.compareToIgnoreCase (“hello”) );忽略大小写进行字典顺序比较,得到第一个不同的Aism值的差值,每个相同则比较长度差;
C、跟技巧有关的方法
System.out.println( str.contains (“lo”) );判断一个String对象是否包含另一个子串
System.out.println( str.startsWith (“he”) );判断一个String对象以什么开头
System.out.println( str.endsWith (“lo”) );判断一个String对象以什么结尾;
System.out.println( str.replace ( "ll" , 'o' ) );将String对象中的某个子串替换成另一个字符串
System.out.println( str.replaceAll ( 'l' , "fuck" ) ); 在之上基础上支持正则表达式;
System.out.println( str.replaceFirst( 'l' , "fuck" ) );将String对象中首次出现的某个子串替换成另一个String对象;
D、特殊方法
1、trim方法,去掉String的前后空格; String input = “ fuck you ”养成习惯:接收到一个输入的时候,首先进行一个trim;
使用:String input = “ *** *** ”
String newStr = input。trim();
system。out。println( newStr。length() );
2、split方法,根据分隔符拆分字符串: 通常用在网络传输中(内容/QQ号/字体/时间)接受打印出来; 【特别注意】:数组长度 = 分隔符+1(分隔符在最后或者后面连续分隔符则不会拆,不计算分隔符个数;)
String birthday = “1987-12-03”;
String[] array = birthday.split( "-" );
system.out.println( array[ 2 ] ); 03
3、mathces方法,做正则表达式效验:
正则表达式:regex;用字符串定义的一个模板,本身也是一个字符串;
正则表达式调用顺序:找到正则表达式,点正则表达式就进来了;
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
在输入邮箱中,用正则表达式进行校验邮箱格式是否正确; (****@126.com/cn/edu)
细节
1、任何一个字符串都是正则表达式,“hello”就是一个,它固定的格式只有“hello”自身才能满足;
【案例】:正则表达式全部核对;
String phoneNum = new Scanner( System.in ).next( );
String regexP = "83201234";
if( phoneNum.matches( regexP ) ){
打印“这是一个正确的号码”
}else
打印“这是一个错误的号码”
}
2、要想更多满足情况,必须加入模糊匹配;([ ] ( ) { })
[ ]:一个方括号代表一个字符;在内部填写这些位置可以放那些符号 “8320[0123456789] [0-9] [0-9a-zA-Z] [\\d]” "-"表示x到x \\d:表示0-9 ^0-9:除了0-9
( ):代表分组可选,( | ),在圆括号中进行分组,每一组都可以出现;"(8320[ 0-9 ]{4} | 8320120 | 8320110 | 8320114)" 或者用 "8320( [ 0-9 ]{4} | 120 | 110 | 114 )" 还可以 "8320( [ 0-9 ]{4} | 1[12]0 | 114 )"
{ } :{ m,n }:最多出现n次,至少出现M次 {m, }至少m次 { m }:只能出现M次[ ]中的数字; *出现任意次 + 一次或者多次 ?一次或者一次也没有; “(200 | 1[0-9]{2} | [1-9] [0-9]?)00”


2、System类:final类,静态属性和方法;
常用属性:in 、 out、 err:标准错误输出流;
常用方法:currentTimeMillis()
exit() 非0 的状态码表示异常终止;
getProperties( ) 获取当前系统属性;
gc( ) 垃圾回收器;
arraycopy() 复制数组;

Runtime类:不能创建自己的实例,可以通过Runtime类的静态方法getRuntime()获取与之关联的Runtime对象;
当前处理器数量: rt.availableProcessors( )
空闲内存数:rt.freeMemory( )
总内存数:rt.totalMemory( )
可用最大内存数:rt.maxMemory( )


2、包装类:(如何查API/DOC)
(一)基本数据类型---包装类---String(两两自由转换):
1、int---Integer;
int a = 100 ;
Integer in = new Integer(a); //标准 思考构造方法传入int类型;
Integer in = a ; //自动封箱,JDK1.5以后的语法糖;

2、Integer---int;
Integer in = 205;
int a = in. intValue; // 思考方法:不传参返回值为int类型的方法;没有String关键字【String跟类有关,跟对象无关,而我们调用的方法与对象有关;】;
int b = in ; //自动拆箱;JDK1.5以后的语法糖;

3、String--Integer
String str = "123";
Interger in = new Interger( str );

4、Integer---String
Integer in = 345
String str = in.toString();
String str0 = in + “”; //当对对象做字符串做拼接操作时,相当于默认调用tostring方法;

5、int---String对象
int a = 120;
//String str = new String() ;
//str.valueOf( a ); //产生为静态的;

//String str =Integer.toString( a ); 该类中的tostring方法重写了Object中的;

//String str = a + "";

6、String---int
String str = "2500" ;
// int a = new Integer( str );
// int a = Integer.parseInt(str);


(二)怎么查找API里面有自己需要的类和方法
首先判断问题:是要变为一个实例化对象吗?那需要传参吗?有没有对象要调用方法的,需要传实参吗?
其次,是本类型通过方法转化类型;类的方法中有没有(形参、返回类型,是否为静态,对象有关)
在API中还会常遇到过时的方法,往往是这个方法内部的实现部分的性能过于复杂或者安全过低,因此不再推荐使用;



3、时间日期类
long time1 = System.currentTimeMillis( ); 从时间原点(1970年1月1日 到现在的毫秒数;)
用 法:用于记录一段程序执行的时间,开始记录一下;结束记录一下;减去则得到结果;【千万次计算用15毫秒;加入输入输出仅1000次耗时使用62毫秒;--输入输出计算机的运算瓶颈

Datesimpledateformat时间格式化输出的好工具;【类:simpleDate】
Date now = new Date();
simpledateformat sdf = new simpledateformat(“yyyy-mm-ddhh:mm:ss”)
String msg = sdf.format( now ); "yyyy年mmdd日HH:mm:ss"

Calendar:日历类(抽象类,不能实例化;直接子类只有一个公历类)实例化
Calendar ca1 = new GregorianCalendar();
Calendar ca1 = Calendar.getInstance(); 直接返回一个公历对象;
使用打印出某年,某月,某日的时间【西方:月从0开始 ; 星期从周日开始
【输入年月日 int year int moth int day】
Calendar ca1 = Calendar.getInstance();// 实例化一个日历对象;
cal.set( Calendar.YEAR,year );
cal.set( Calendar.MONTH,month-1 );
cal.set( Calendar.DATE,day );
int msg = ca1.get( Calendar.DAY_OF_ WEEK);
打印(msg); //但是这个日期的周几出错,因为从周日开始;可以使用SWitch()语句进行判断,打印出结果;或者;
使用 Date birthDay = cal.getTime(); //调用get方法将cal 转换为Data类型
String result = new SimpleDateFormat("E").format(birthDay); 使用工具打印出其周几;



数学类: 没有new概念;


作业训练:
1、查找“asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd”
该字符串中有多少个af
做法1: 字符串转char数组;遍历,计数;
做法2: 寻找a所在的数组下标,然后找到之后是否为f 是则计数增加1;
做法3:将字符串af用a替换,然后打印出之前的长度减去新字符串长度;
做法4:使用拆分split(“af”)【陷阱】:以af结尾,则后面不会进行计数;

2、输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,小写字母变成大写!
3、写一个程序可以对两个字符串进行测试,得知第一个字符串是否包含在第二个字符串中。如字符串”PEN”包含在字符串“INDEPENDENT”中。str1.contains(str2)
4、编写程序,统计出字符串“want you to know one thing”中字母n和字母o的出现次数。
5、 
1)从字符串“LOVOT90班20111208”中提取开班日期 str.subSequence(size+1, size+5)
2)将“LOVO JAVA”字符串中的“JAVA”替换为“J2EE”。 str1.replace("JAVA", "J2EE")
3)取出“LOVOT96班20120611”第8个字符。 str2.charAt(7)
4)清除“LOVOT96班20120611”中所有的0。 str3.replace("0","")
5)清除“LOVOT96班20120611 LOVO 老师”中所有的空格。 
6)从任意给定的身份证号码中提取此人的出生日期idCard.matches(regex) 正则表达式

6、查看API DOC文档。自己查找到String提供的方法完成以下功能:
1>、将"Hello"和"World"两个字串连接到一起。concat
2>、将"I saw a saw saw a saw !"将里面所有的‘s’替换成‘S’
str3.replace("s", "S")
3>、解析
"http://localhost:8080/login.jsp?username=zhang3&password=1234567",将得到的用户名和密码的值放到一个String数组中。
substring(flagUm, flagPw) 提取数据 // str4.lastIndexOf("username=") ;查找坐标
0 0
原创粉丝点击