------- android培训、java培训、java学习型技术博客、期待与您交流! ----------
String类
String是java中的字符串。
String对象是System.Char 对象的有序集合,用于表示字符串。
String对象的值是该有序集合的内容,并且该值是不可变的。
String最大的特点
String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。
String类是用于描述字符串的类。
它提供了多个方法对字符串进行操作。
1,获取。
1.1字符串中的包含的字符数,也就是字符串的长度。
intlength():获取长度。
1.2根据位置获取位置上某个字符。
charcharAt(int index):
1.3根据字符获取字符在字符串中第一次出现的位置。
intindexOf(int ch):
intindexOf(int ch, int fromIndex):从fromIndex指定位置开始获取
intindexOf(String str):
intindexOf(String str, int fromIndex):从fromIndex指定位置开始获取
1.4根据字符获取字符在字符串中最后一次出现的位置。
intlastIndexOf(int ch):
intlastIndexOf(int ch, int fromIndex) 从fromIndex指定位置开始获取
intlastIndexOf(String str)
intlastIndexOf(String str, int fromIndex) 从fromIndex指定位置开始获取
1.5获取字符串中一部分字符串。也叫子串.
Stringsubstring(int beginIndex, int endIndex) 包含begin 不包含end
Stringsubstring(int beginIndex);
2,判断。
2.1字符串中是否包含某一个子串。
booleancontains(str):
也可以使用indexOf(str),
if(str.indexOf("abc")!=-1)既可以判断是否包含,又可以获取出现的位置。
2.2字符中是否有内容。
booleanisEmpty(): 原理就是判断长度是否为0.
2.3字符串是否是以指定内容开头。
booleanstartsWith(str);
2.4字符串是否是以指定内容结尾。
booleanendsWith(str);
2.5判断字符串内容是否相同。 复写了Object类中的equals方法。
booleanequals(str);
2.6判断内容是否相同,并忽略大小写。
booleanequalsIgnoreCase();
3,转换。
3.1将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:static StringcopyValueOf(char[]);
static String copyValueOf(char[] data, intoffset, int count)
static String valueOf(char[]):
3.2将字符串转成字符数组。
char[]toCharArray():
3.3将字符串转成字节数组。
byte[] getBytes():
3.4将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.5将基本数据类型转成字符串。
staticString valueOf(int)
staticString valueOf(double)
//简单方法:3+"";
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4,替换
Stringreplace(oldchar,newchar);
5,切割
String[]split(regex);
6,子串。获取字符串中的一部分。
Stringsubstring(begin);
Stringsubstring(begin,end);
7,转换,去除空格,比较。
7.1将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除。
Stringtrim();
7.3对两个字符串进行自然顺序的比较。
intcompareTo(string);
StringBuffer
字符串缓冲区。是一个容器。
特点:
1,长度是可变化的。
2,可以字节操作多个数据类型。
3,最终会通过toString方法变成字符串。
1,存储。
StringBufferappend():将指定数据作为参数添加到已有数据结尾处。
StringBufferinsert(index,数据):可以将数据插入到指定index位置。
2,删除。
StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBufferdeleteCharAt(index):删除指定位置的字符。
3,获取。
charcharAt(int index)
intindexOf(String str)
intlastIndexOf(String str)
intlength()
Stringsubstring(int start, int end)
4,修改。
StringBufferreplace(start,end,string);
voidsetCharAt(int index, char ch) ;
5,反转。
StringBufferreverse();
6,将缓冲区中指定数据存储到指定字符数组中。
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
StringBuilder
JDK1.5版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
升级三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。
基本数据类型对象包装类
byte Byte
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换
基本数据类型转成字符串。
基本数据类型+""
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
字符串转成基本数据类型。
xxxa = Xxx.parseXxx(String);
inta = Integer.parseInt("123");
doubleb = Double.parseDouble("12.23");
booleanb = Boolean.parseBoolean("true");
Integeri = new Integer("123");
intnum = i.intValue();
十进制转成其他进制。
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(string,radix);
JDK1.5版本以后出现的新特性
基本数据的自动拆箱与装箱:
class IntegerDemo1
{
publicstatic void main(String[] args)
{
//Integerx = new Integer(4);
Integerx = 4;// x自动装箱的过程就是:newInteger(4)
x= x + 2;// x自动拆箱,拆箱方法:x.intValue();x变成了int类型。和2进行加法运算,再将和进行装箱赋给x。
Integerm = 128;
Integern = 128;
sop("m==n:"+(m==n));//结果为false。因为超出了范围
/*当数值在byte(-127~128)范围内,对于新特性,
如果该数值已经存在,则不会在开辟新的空间。*/
Integera = 127;
Integerb = 127;
sop("a==b:"+(a==b));//结果为true。因为a和b指向了同一个Integer对象。
}
}
System类
在System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;
加载文件和库的方法;还有快速复制数组的一部分的实用方法。
System类中的方法和属性都是静态的。
out:标准输出,默认是控制台。
in:标准输入,默认是键盘。
获取系统属性信息:Properties getProperties();
示例代码:
import java.util.*;
class SystemDemo
{
publicstatic void main(String[] args)
{
Propertiesprop = System.getProperties();
//因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
//那么可以通过map的方法取出该集合中的元素。
//该集合中存储都是字符串。没有泛型定义。
//如何在系统中自定义一些特有信息呢?
System.setProperty("mykey","myvalue");
//获取指定属性信息。
Stringvalue = System.getProperty("os.name");
System.out.println("value="+value);
//可不可以在jvm启动时,动态加载一些属性信息呢?
Stringv = System.getProperty("haha");
System.out.println("v="+v);
/*
//获取所有属性信息。
for(Objectobj : prop.keySet())
{
Stringvalue = (String)prop.get(obj);
System.out.println(obj+"::"+value);
}
*/
}
}
Runtime类
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
可以通过 getRuntime 方法获取当前运行时。
该类并没有提供构造函数。
但是发现该类中还有非静态方法。
说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。
由这个特点可以看出该类使用了单例设计模式完成。
该方式是static Runtime getRuntime();
示例代码:
class RuntimeDemo
{
publicstatic void main(String[] args) throws Exception
{
//获得Runtime对象
Runtimer = Runtime.getRuntime();
//调用方法,通过记事本打开SystemDemo.java文件
Processp = r.exec("notepad.exe SystemDemo.java");
//Thread.sleep(4000);
//p.destroy();杀掉进程
}
}
Date类
类 Date 表示特定的瞬间,精确到毫秒。
import java.util.*;
import java.text.*;
class DateDemo
{
publicstatic void main(String[] args)
{
Dated = new Date();
System.out.println(d);//打印的时间看不懂,希望有些格式。
//将模式封装到SimpleDateformat对象中。
SimpleDateFormatsdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");
//调用format方法让模式格式化指定Date对象。
Stringtime = sdf.format(d);
System.out.println("time="+time);
longl = System.currentTimeMillis();
Dated1 = new Date(l);
System.out.println("d1:"+d1);
}
}
Calendar类
Calendar对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值。
示例代码:
/*
两个练习:
1,获取任意年的二月有多少天。
思路:根据指定年设置一个时间就是
c.set(year,2,1)//某一年的3月1日。
c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。
2,获取昨天的现在这个时刻。
c.add(Calenar.DAY_OF_MONTH,-1);
*/
import java.util.*;
class CalendarDemo2
{
publicstatic void main(String[] args)
{
Calendarc = Calendar.getInstance();
//c.set(2012,2,23);
c.add(Calendar.DAY_OF_MONTH,-18);
printCalendar(c);
}
publicstatic void printCalendar(Calendar c)
{
String[]mons = {"一月","二月","三月","四月"
,"五月","六月","七月","八月"
,"九月","十月","十一月","十二月"};
String[]weeks = {
"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",
};
intindex = c.get(Calendar.MONTH);
intindex1 = c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR)+"年");
//sop((c.get(Calendar.MONTH)+1)+"月");
sop(mons[index]);
sop(c.get(Calendar.DAY_OF_MONTH)+"日");
//sop("星期"+c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index1]);
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
Math类
Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
示例代码:
import java.util.*;
class MathDemo
{
publicstatic void main(String[] args)
{
Randomr = new Random();
for(intx=0; x<10; x++)
{
//intd = (int)(Math.random()*10+1);
intd = r.nextInt(10)+1;
sop(d);
}
}
publicstatic void show()
{
doubled = Math.ceil(16.34);//ceil返回大于指定数据的最小整数。
doubled1 = Math.floor(12.34);//floor返回小于指定数据的最大整数。
longl = Math.round(12.54);//四舍五入
sop("d="+d);
sop("d1="+d1);
sop("l="+l);
doubled2 = Math.pow(2,3);
sop("d2="+d2);
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}