String类:
字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。
String str = "abc";//"abc"存储在字符串常量池中。
池中没有就建立,池中有直接用。
String s1 = "abc";//在常量池中创建一个对象
String s2 = new String("abc");//在堆内存中创建两个对象,一个new一个,一个字符串对象。
System.out.println(s==s1);true
System.out.println(s==s2);false
System.out.println(s.equals(s2));true
String类覆写了Object中的equals方法建立了String类自己的判断对象是否相同的依据。
构造函数:
1.String s = new String();
2.byte[] arr = {97,66,67,68};
String s = new String(arr);
System,out.println("s="+S);//打印结果:s=aBC
3.char[] arr = {'w','a','p','q,','x'};
String s = new String(arr);
System.out.println("s="s);//打印结果:s=wapqx
4.char[] arr ={w,a,p,q,x};
String s = new String(arr,1,3);//从1开始取3个。
System.out.println("s="s);//打印结果:s=apq
-----------------------------------------------------
String类:常见功能
1.获取
1.1获取字符串中字符的个数(长度)
int length();
1.2根据位置获取字符。
char charAt(int index);
1.3根据字符获取位置,返回第一次出现的位置。(必须会)
int indexOf(int ch);
int indexOf(int ch,int fromIndex);从指定位置开始索引,返回第一次出现的位置。
int indexOf(String str);
int indexOf(String str,int fromIndex);
int lastIndexOf(int ch);
int lastIndexOf(int ch,int fromIndex);
int lastIndexOf(String str);
int lastIndexOf(String str,int fromIndex);
1.4获取字符串中一部分字符串。也叫子串。
String substring(int beginIndex,int endIndex);
String substring(int beginIndex);
返回一个新的字符串,从指定的beginIndex开始,直到索引endIndex-1处结束。
包含begin不包含end
2.转换
2.1将字符换变成字符串数组。
String[] split(String regex);涉及到正则表达式。
例: String s = "张三,李四,王五";
String[] arr = s.split(",");
2.2将字符变成字符数组。
char[] toCharArray();
2.3将字符串变成字节数组。
byte[] getBytes();
2.4将字符串中的字母转成大小写。
String toUpperCase();
String toLowerCase();
2.5将字符串中的内容进行替换。
String replace(char oldChar,char newChar);
String replace(String s1,String s2);
2.6将字符串两端的空格去除。(开发中非常有用)
String trim();
2.7将字符串进行连接。
String conat(String);
System.out.println("abc".concat("kk"));
System.out.println("abc"+"kk");//等效
2.8
System.out.println(String.valueOf(4)+1);
System.out.println(""+4+1);//等效
3.判断
3.1两个字符串内容是否相同。
boolean equals(Object obj);
boolean equalsIgnoreCase(string str);//忽略大小写进行比较。
例:String s = "abc";
System.out.println(s.equals("ABC".toLowerCase()));
System.out.println(s.equalsIgnoreCase("ABC"));
3.2字符串中是否包含指定字符串。
boolean contains(string str);
3.3字符串是否以指定字符串开头,是否以指定字符串结尾。
boolean startsWith(string);
boolean endsWith(string);
4.比较: compareTo();
int compareTo(String anotherString)
System.out.println("a".compareTo("b"));//-1
System.out.println("a".compareTo("A"));//32
System.out.println("abc".compareTo("bcd"));//-1
5.intern();对字符串池进行操作的。(开发一般不用。)
String s1 = new String("abc");
String s2 = s1.intern();//池中有就使用,池中没有就建立。
System.out.println(s1==s2);//false
通过new创建不在常量池中。
-----------------------------------------------------
StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
1.长度可变。
2.可以存储不同类型数据。
3.最终要转成字符串进行使用。
4.可以对字符串进行修改。
既然是一个容器对象。应该具备什么功能呢?
1.添加:
StringBufferappend(data); short和byte不能添加。
StringBufferinsert(index,data);
2.删除:
StringBufferdelete(start,end):包含头不包含尾。
StringBufferdeleteCharAt(int index):删除指定位置的元素。
清空缓冲区。缓冲区还在。
sb.delete(0,sb.length());
3.查找。
charAt(index);
int indexOf(string);
int lastIndexOf(string);
4.修改
StringBufferreplace(start,end,string);
voidsetCharAt(index,char);
增删改查;CURD create update read delete
设置长度:setLength(int);
反转:reverse();
StringBuffer--可变长度数组:
数组是固定长度的。
可变长度原理:会创建新数组,复制原数组内容到新数组。
-------------------------------------------------
StringBulider:JDK1.5之后出现,线程不同步,效率更高。
功能用法和StringBuffer一样。
Stringbuffferx线程是同步的。通常用于多线程。
StringBulider线程不同步。通常用于单线程,他的出现提高效率。
---------------------------------------------------------------
System类:
常见方法:
longcurrentTimeMillis();获取当前时间的毫秒值。
返回当前时间与协调世界时1970年1月1日午夜之间的时间差。
voidexit(int status);终止正在运行的Java虚拟机。
PropertiesgetProperty();确定当前的系统属性。
存储的键和值都是字符串类型,所以没有指定泛型。
给系统设置一些属性,这些属性是全局的。
setProperties(String key,String value);调用Hashtable的方法put。
重点:获取系统中的回车符。
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
public class SystemDemo {
Privatestatic final String LINE_SEPARATOR = System.getProperty("line.separator");
public static void main(String[] args) {
long l1 = 1355364853755l;
System.out.println(l1);//1355364853755
long l2 = System.currentTimeMillis();//获取当前时刻。
System.out.println(l2-l1);
Properties prop = System.getProperties();
Set<String> nameSet = prop.stringPropertyNames();
for(String name : nameSet){
String value = prop.getProperty(name);
System.out.println(name+":::"+value);
}
System.out.println("hello"+LINE_SEPARATOR+"world");
}
}
---------------------------------------------------------------
Runtime:没有构造方法摘要,说明该类不可以创建对象,
又发现还有非静态的方法。说明该类应该提供静态的返回该类对象的方法。
而且只有一个,说明Runtime类使用了单例设计模式的完成。
如果一个类没有提供构造函数,并且这个类具备着一般非静态方法,这个类至少有一个静态方法,返回本类对象。
public class RunTimeDemo {
public static void main(String[] args) throws IOException {
Runtime r = Runtime.getRuntime();
//execute:执行
Process p = r.exec("notepad.exe c:\\javaheima.txt");//使用指定程序,解析指定文件。
p.destroy();//杀掉进程
}
}
---------------------------------------------------------------
Math类提供了操作数学运算的方法,都是静态的。
celi();返回大于参数的最小整数。double d1 = Math.ceil(12.56);
floor();返回小于参数的最大整数。double d2 = Math.floor(12.56);
round();返回四舍五入的整数。double d3 = Math.round(12.56);
max(int a,int b);返回int值中较大的一个。
pow(double a,double b);返回a的b次方。
random();返回介于0.0和1.0之间的double值。
double d = Math.ceil(Math.random()*10);
Random r = new Random();
for(int i = 0 ; i < 10; i++){
int d = r.nextInt(6)+1;
System.out.println(d);
}
---------------------------------------------------------------
long time = System.currentTimeMillis();
System.out.println(time);//1355392030148
Date date = new Date();//将当前日期和时间封装成Date对象
System.out.println(date);//Thu Dec 13 17:44:05 CST 2012
Date date2 = new Date(1355370753558l);//将指定毫秒值封装成Date对象。
System.out.println(date2);//Thu Dec 13 11:52:33 CST 2012
日期对象和毫秒值之间的转换:
毫秒值-->日期对象:
1.通过Date对象的构造方法new Date(time);
2.通过setTime设置。
可以通过Date对象的方法对该日期中的各个字段进行操作。
日期对象-->毫秒值:
1.getTime方法。
可以通过具体的数值进行运算。
boolean after(Date when);
boolean before(Date when);
compareTo(Date anotherDate);
对日期对象进行格式化。
将日期对象-->日期格式的字符串。
使用的是DateFormat类中的format方法。
例:
Date date = new Date();
//获取日期格式对象。具备着默认的风格。FULL LONG MEDIUM SHORT等可以指定风格。
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//不包含时间
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
//自定义风格。
dateFormat = new SimpleDateFormat("yyyy--MM--dd");
//使用DateFormat的format方法格式化日期对象,返回String类型
String str_date = dateFormat.format(date);
System.out.println(str_date);//2012--12--13
将日期格式的字符串-->日期对象。
使用的是DateFormat类中的
例:
String str_date = "2012---12---13";
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
dateFormat = new SimpleDateFormat("yyyy---MM---dd");
Date date = dateFormat.parse(str_date);
System.out.println(date);
---------------------------------------------------------------
Calendar:示例
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2012,3,15);
c.add(Calendar.YEAR, 2);//在年字段上偏移两年。
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;//月份从0开始
int day = c.get(Calendar.DAY_OF_MONTH);
String week =getweek(c.get(Calendar.DAY_OF_WEEK));
System.out.println(year+"年"+month+"月"+day+"日 "+week);
}
private static String getweek(int i) {
String[] week = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return week[i];
}
}