---------------------- android培训、java培训、期待与您交流! ----------------------
String类
java.lang.String类代表不可变的字符序列。
(不可变的是指:生成的String对象在内存中值是不会改变的,它只会再创建一个名字相同的对象来存储改变的值。
例如:String s1="hello" String s2="java" s1+=s2 在这里s1指向两块内存区域。)
构造函数(API文档)
String() 空字符串。
String(byte[] bytes) 字节数组构成字符串,如(编码格式的转换)。
String(byte[] bytes,int offset,int length) 从字节数组的第几个位置开始,后面数多少个字节,构成字符串。
String(byte[] bytes,int offset,int length,String charsetName) charsetName 字符编码。
例:
String s1="hello"; String s2="hello";
System.out.println(s1==s2); //true s1和s2指向同一块数据“hello”。
String s1=new String("hello"); String s2=new String("hello");//传入初始化的值
String s3=s1;
//对象的比较,“==”用于比较两个变量的值是否相等;equals方法比较两个对象的内容是否一样
System.out.println(s1==s2); //false s1和s2比较的是两个对象的首地址,而不是地址所指向的内容
System.out.println(s1==s3); //true s1和s3指向的是同一个地址
System.out.println(s1.equals(s2)); //true 直接比较的是s1和s2的内容
char c[]={'s','u','n',' ','j','a','v','a'};
String s1=new String(c,4,4);
System.out.println(s1); //java 从第4个字符开始,截取4个字符。
String类 常用方法
例1:
String s1="sun java",s2="Sun Java";
System.out.println(s1.charAt(1)); //1:u 0:s
System.out.println(s2.length()); //8 计算字符长度
System.out.println(s1.indexOf("java")); //4 从0开始
System.out.println(s1.indexOf("Java")); //-1
System.out.println(s1.equals(s2)); //false
System.out.println(s1.equalsIgnoreCase(s2)); //true
String s=".net程序员";
String sr=s.replace('.net','java');
System.out.println(sr); //java程序员
例2
String s="Welcome to Java World!";
String s1=" sun java ";
String sL=s.toLowerCase();
String sU=s.toUpperCase();
String sp=s1.trim(); //去掉开头和结尾的空格
System.out.println(s.startsWith("Welcome")); //true
System.out.println(s.endWith("World")); //false
System.out.println(sL); //welcome to java world!
System.out.println(sU); //WELCOME TO JAVA WORLD!
System.out.println(sp); //sun java
public String substring(int beginIndex) 返回该字符串从beginIndex开始到结尾的子字符串
public String substring(int beginIndex,int endIndex) 返回该字符串从beginIndex开始到endIndex结尾的子字符串
public static String valueOf(...)可以将所有类型数据转换为字符串(引用类型调用toString方法)。
public String[] split(String regex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。
例:
String s="Jack,M,1986";
String[] split=s.split(",");
for(int i=0;i<split.length;i++){
System.out.println(split[i]);} //Jack M 1986
例:
输出大小写字母,数字和符号。
public class StringTest {
public static void main(String[] args) {
String defaults = "s lkd fjoFAVBjfsd35324fjlsdf@!#$@# ;lfDFA ojror09435803jfdjfjf$%#$^$! #ADAFDGNFGNERT*";
// char[] cDefaults=defaults.toCharArray();
String upperCase = "";
String lowerCase = "";
String number = "";
String other = "";
for (int i = 0; i < defaults.length(); i++) {
char c=defaults.charAt(i);
// if (c >= 'a' && c <= 'z') {
// upperCase += c;
// } else if (c >= 'A' && c <= 'Z') {
// lowerCase += c;
// } else if (c >= '0' && c <= '9') {
// number += c;
// } else
// other += c;
//Character 类在对象中包装一个基本类型 char 的值
// if(Character.isUpperCase(c)){}
// else if(Character.isLowerCase(c)){}
}
System.out.println(upperCase);
System.out.println(lowerCase);
System.out.println(number);
System.out.println(other);
}
}
例:
查找共多少個java
public class StringTest2 {
public static void main(String[] args) {
String str = "javajjavagoodjavaluckjavaokjavahaijavahellojavahaohaojavaabyebyejava";
int count = 0;
String javaVar = "";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == 'j') {
javaVar = str.substring(i, i + 4);
if (javaVar.equals("java")) {
count++;
}
}
}
System.out.println(count);
}
}
StringBuffer类
Buffer是缓冲区。
java.lang.StringBuffer类代表可变的字符序列。
(可变的是指,例如:StringBuffer s1="hello" StringBuffer s2="java" s1+=s2 在这里s1指向一块内存区域。)
StringBuffer类
常见方法:
public StringBuffer append()可以为该StringBuffer对象添加字符序列,返回添加后的该StringBuffer对象引用。
public StringBuffer append(String str)
public StringBuffer append(StringBuffer sbuf)
public StringBuffer append(char[] ch)
public StringBuffer append(char[] ch,int offset,int len)
public StringBuffer append(double d)
public StringBuffer append(object obj)
public StringBuffer insert()可以为该StringBuffer对象在指定位置插入字符序列,返回修改后的该StringBuffer对象引用。
public StringBuffer delete(int start,int end)可以删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用。
public StringBuffer reverse()用于将字符序列逆序,返回修改后的该StringBuffer对象引用。
例:
String s="Microsoft";
StringBuffer sbuf=new StringBuffer(s);//把字符串转化为StringBuffer
sbuf.append('/').append("IBM").append('/').append("SUN");
System.out.println(sbuf); //Microsoft/IBM/SUN
StringBuffer sbuf2=new StringBuffer("数字");
for(int i=0;i<=9;i++){sbuf2.append(i);}
System.out.println(sbuf2); //数字0123456789
char[] a={'a','b','c'};
sbuf2.delete(8,sbuf2.length()).insert(0,a);//先从第8位开始截,6789截掉了,然后在第0位插入a的数组。
System.out.println(sbuf2); //abc数字012345
System.out.println(sbuf2.reverse()); //逆序输出,543210字数cba
基本数据类型包装类
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作,也就是把数据类型包装成对象,通过对象调用对应的方法。
java.lang.Integer类
构造方法
Integer(int value)
Integer(String s)
常见方法:
public static final int MAX_VALUE 最大的int类型值(2^31-1)
public static final int MAX_VALUE 最小的int类型值(-2^31)
public long longValue() 返回封装数据的long类型值
public double doubleValue() 返回封装数据的double类型值
public int intValue() 返回封装数据的int类型值
public static int parseInt(String s) 将字符串解析成int类型数据,返回该数据
public static Integer valueOf(String s) 返回Integer对象,其中封装的整型数据为字符串s所表示。
相当于 new Integer(Integer.parseInt(s))
例:
Integer i=new Integer(100);
Double d=new Double("123.456");//把字符串"123.456"转换成double类型的数,然后在包装到对象里去。
int j=i.intValue()+d.intValue();//100+把double类型强制转换成int类型123
double pi=Double.parseDouble("3.1415926");
double r=Double.valueOf("2.0").doubleValue();//先把字符串"2.0"转换成Double对象,然后再转换成double值
try{
int k=Integer.parseInt("1.25");
}catch(NumberFormatException e){ //如果字符串不包含可解析的整数,抛异常。
System.out.println("数据格式不对!");
}
例:
编写一个方法,返回一个double型二维数组,数组中的元素通过解析字符串参数获得。 如字符串:"1,2;3,4,5;6,7,8"。
大体思路:遇到一个程序,先要分成块来做,一块一块解决,就像常说的“蚂蚁啃大象”,先把会的写出来。
经常的打印输出,有助于调试。
public class TwoDimensionArrays {
public static void main(String[] args) {
String str = "1,2;3,4,5;6,7,8";
double[][] dou; // 定义一个二维数组
String[] firstSplit = str.split(";"); // 首先用“;”分隔
dou=new double[firstSplit.length][];//先定义第一维数组长度
for (int i = 0; i < firstSplit.length; i++) {
// System.out.println(firstSplit[i]);
String[] secondSplit = firstSplit[i].split(",");// 其次用“,”分隔
dou[i]=new double[secondSplit.length];//再定义每个第一维数组里,第二维数组长度
for (int j = 0; j < secondSplit.length; j++) {
// System.out.println(secondSplit[j]);
dou[i][j]=Double.parseDouble(secondSplit[j]);//把String类型转换为Double类型
System.out.print(dou[i][j]+" ");
}
System.out.println();
}
}
}
Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。
abs()绝对值
sqrt()平方根
random()随机数0.0-1.0
例:
double a=Math.random();
double b=Math.random();
System.out.println(Math.sqrt(a*a+b*b));//a的平方加b的平方,开根号
System.out.println(Math.pow(a,8));//a的8次幂
System.out.println(Math.round(b));//b四舍五入
System.out.println(Math.log(Math.pow(Math.E,15)));//E为静态常量,E的15次幂的(log)对数15.0
double d=60.0,r=Math.PI/4;
System.out.println(Math.toRadians(d));//把角度转换成弧度
System.out.println(Math.toDegrees(r));//把弧度转换成角度45.0
---------------------- android培训、java培训、期待与您交流! ----------------------