Java API 为Java应用程序编程接口
1 枚举
关键字:enum //在记忆过程中出现位置不对称
枚举是一种类型,其父类为,java.lang.Enum
作用:对程序合理赋值,易于维护,有助于确保为变量指定合法的,期望的值
枚举定义的为静态常量 以枚举类做类型 . 出已定义的常量
在定义枚举过程中要以" ; "结束(此处分号有争议,在学习看资料过成功分号也可是省略,准确来说是不写)
如:
public enum text{
常量1,常量2;
}
public class ob{
public static void main(String [] args){
text str=text.常量1
}
}
2 包装类 java.lang
包装类就是把变量封装成类;好处就是包装类有特定的方法,是变量的功能更多
基本数据类型 | 包装类 |
byte | Byte |
int | Integer |
double | Double |
short | Short |
long | Long |
float | Float |
char | Charatcer |
boolean | Boolean |
1)基本数据类型向包装类进行转换
①使用构造方法进行转换 public Type(type value) public Type(String value)
如: Integer a=new Integer(30);
Integer b=new Integer("123");
②使用方法 valueOf( )方法 public
如:Integer a=Integer.valueOf(32);//静态方法用类名调用
Integer b=Integer.valueOf("123");
注:除char;Charactor ch=new Charactor("sd");此不能允许;括号内' '可以
2)包装类向基本数据类型转换
使用类名调用 类型.xxxValue();//xxx为数据类型
Interger a=new Integer("123");//装箱
int b=a.intValue(); //拆箱
3)由于String 类型为特殊的类,也是常用的类此处对String 类型进行单独处理
①用toString();把包装类转换成基本数据类型
String sex=Character.toString('男');
String num=Integer.toString(123);
String num1=123+""; //把非字符串类型转换为字符串类型,字符串与字符串之间的连接
②使用parseXxx();将字符串转换为相应的基本数据类型数据 除character外
int num=Integer.parseInt("123");
boolean ob=Boolean.pareseBoolean("True"):
注:此过程中字符串的内容 真假 不区分大小写如果其中内容为TRUE返回类型为真,否则其余全部为假
原理:public static type parseType(String Type);
结合以上由于系统JDK1.5以后 推出自动转换版本
Integer a=36;
int b=a;
String 类型的方法
1:String 类型的长度 .length();
String a="abc";
int longs=a.length();
2: String 类型的比较 ①equals ②equalsIgnoreCase ③==
①equals
String a="abc";
boolean or=a.equals("abcd");
System.out.println(or);
结果很清晰为false 此过程中equals比较的是对应的值(堆内存中的数据)
②equalsIgnoreCase 比较过程中不区分大小写
String a="abc";
String b="ABC";
a.equalsIgnoreCase(b);
结果返回类型为true
③==
String a="abc";
String b=new String ("abc");
System.out.println(a==b);
结果为false 此过程中==比较的是地址
注:内存中分为栈内存和堆内存 == 比较的是栈内存中的地址也可以理解为 “a”==“b”
当然返回的类型为false
如果
String a="abc";
String b="abc";
System.out.println(a==b);
结果为true
原因:因为String类比较特殊 存在一个静态常量池(String常量池)
两种说法1 常量池存在于 栈内存中(培训老师分析) 2 常量池存在在堆内存中
无论是1~2 在定义String类型并且new出来 实例化一个String类型的对象 系统会自动判断在常量池中是否已经存在相同对象,如果存在则不创建否则 在常量池中创建该对象
3:①转换字符串中的英文小写 toLowerCase() ②转换字符串中的英文大写toUpperCase();
①toLowerCase()
String a="abD";
System.out.println(a.toLowerCase());
输出结果为abd
②toUpperCase();
String a="abD";
System.out.println(a.toUpperCase);
输出结果为ABD
4:①搜索第一个出现的字符 indexOf(int ch); ②搜索最后一个出现的字符lastIndexOf(String value);
①indexOf(int ch); indexOf(String value); public int indexOf();
String a="abcdef";
System.out.println(a.indexOf("d"));
结果为3 因为返回类型为int 在按下表为0开始查找如果找到返回下标值,否则返回-1没有找到
注:此方法为从头开始
②lastIndexOf(int ch) lastIndexOf(String value);
String a="abcabc";
System.out.println(a.lastIndexOf("a"));
结果返回3 因为此方法为从后开始查找,如若没有找到返回-1
5:字符串与字符串之间的连接 concat();
String a="ab";
String b="cd";
String c=a.cancat(b);
System.out.println(c);
输出结果为“abcd”
6:提取从位置索引开始的字符串部分
①public String substring(int index); [index,结束);
String a="abcde";
String newstring=a.substring(2);
System.out.println(newstring);
输出结构为“cde”
②public String substring(int begin,int end); [开始,结束);
String a="abcde";
String newstring=a.substring(1,3);
System.out.println(newstring);
输出结构为“bcd”
如果输入的下标超出或未到达范围会出现 String类型下标越界 java.lang.StringIndexOutOfBoundsException
7:返回一个前后不含空格的字符串 trim();
String a="a b c d"
String b=a.trim();
System.out.println(b);
输出结果为“abcd”
注:只去除两端空格
8:判断字符串中是否有要查询的元素 contains(String a); 返回类型为布尔类型 真假
String a="abcde";
boolean jg=a.contains("c");
System.out.println(jg);
输出结果为true
9:字符串拆分方法 split(separator,limit)
separator为可选项,标志拆分字符串时使用的一个或多个字符
limit为可选项用来限制返回数组中的元素个数
使用拆分方法 返回一个String类型数组 public String[] split(String regex);
public class StringUse2 {
public static void main(String [] args){
System.out.println("***原歌词格式***");
String use="长亭外1古道边1芳草碧连天1晚风拂1柳笛声残1夕阳山外山";
System.out.println(use);
String [] read=use.split("1");
for (String str : read) {
System.out.println(str);
}
}
}
输出结果为
***原歌词格式***
长亭外1古道边1芳草碧连天1晚风拂1柳笛声残1夕阳山外山
长亭外
古道边
芳草碧连天
晚风拂
柳笛声残
夕阳山外山
注:拆分过程中根据哪个元素拆分重组的数组中不包含 那个关键元素
注String 类型中的所有方法都不能修改默认值 除非把返回值重新赋值 或者使用StringBuffer
StringBuffer:
StringBuffer 在位java.util 包中 如果使用需要进行实例化 StringBuffer 是String的增强类
StringBuffer st=new StringBuffer("abc");
//或者重新定义 不赋予初始值
StringBuffer str=new StringBuffer();
str.方法
①append(参数);
StringBuffer str=new StringBuffer("abc");
String a="de";
StringBuffer ss=str.append(a);
System.out.prinlnt(ss);
输出结果为"abcde"
②insert(int index,参数);
StringBuffer str=new StringBuffer("abc");
String a="de";
StringBuffer ss=str.insert(0,a);
System.out.prinlnt(ss);
输出结果为"deabc"
③将StringBuffer 转换为String类型toString();
StringBuffer st=new StringBuffer("abc");
String a=st.toString();
String 类与 StringBuffer 的区别为
① String类型方法不改变默认值 StringBuffer类 方法改变默认值
② StringBuffer 特有方法 appends() insert(int index,String s);
产生随机数方法①利用数学公式运算②使用生成随机数的类
① Math类位于java.lang包中 此类中存在很多运算方式 如 对某数取绝对值Match.abs(-3.5);
对两数取最大值Math.max(19,20);
Math.random( )方法中生成随机数的范围是[0,1);
尝试用如下
int a=(int)(Math.random()*10)
② Random随机数
Random位于java.util包中
使用前需要实例化 Random rand=new Random()
使用 Random 类中生成随机数的方法 rand.nextInt(范围);//生成的为整数类型随机数 括号中的范围为最大值且取不到 随机数的分为从0开始
注:在对实例化过程中new的对象括号内如果不写一long范围的数值,按照时间类型计算
如果写入long类型的数值 则为固定去随机数 long的值会记录生成的这个随机数不会再次随机生产下次调用可以直接使用
日期时间类
1)时间的取值两种方法①Date ②Calendar
①Date 位于java.util包中
使用日期应先实例化 Date对象 Date date=new Date();
Date date=new Date();
System.out.println(date);
由于输出的时间与我们的习惯不符 推出自定义时间类
SimpleDateFormat 位于java.text
首先 实例化这个自定义时间类 SimpleDateFormat p=new SimpleDateFormat(格式);
注意实例化后的括号为你需要填写的时间格式
年yyyy 月MM 日DD 小时HH 分钟ss
其次 在SimpleDateFormat中调用特有方法
p.format(date);
Date date=new Date();
SimpleDateFormat p=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(p.format(date));//返回类型为StringBuffer format方法
②Calendar 是一个抽象类 (抽象类不能实力化 被继承的子类必须重写父类中的抽象方法) 位于java.util包中
使用 首先 由于Calendar为抽象类 不可以实例化 所以使用此类中的静态方法来调用此对象
Calendar cal=Calendar.getInstance();
其次 获取其时间日期等相关信息 使用到方法get()
类中存在静态常量 常用的为YEAR MONTH DAT_OF_MONTH DAT_OF_WEEK
cal.get(Calendar.Year)
Calendar p=Calendar.getInstance;
System.out.println(p.get(Calender.YEAR)+"年"+(p.get(Calender.MONTH)+1)+"月"+p.get(Calender.DAY)+"日");//此处月份+1是因为官方从0开始所以+1
p.get(Calender.YEAR)