封装类
- 所有的基本类型都有对用的类类型
- 包装类(封装类)
- Number类对应有Byte,Short,Integer,Long,Float,Double这么多子类。
Integer 封装类
常用方法
Integer i = new Integer(5);
Integer x = new Integer("34");
System.out.println(it instanceof Number); //ture
System.out.println(Integer.MIN_VALUE);//求一个分装类的最大最小值
System.out.println(Character.toUpperCase('a'));//A
System.out.println(Character.toLowerCase('a'));//a
System.out.println(Character.toString('a'));//a
String str = "孙悟空";
byte [] strByte = str.getBytes();//将字符创转换成字节数组
for (byte b : strByte) {
System.out.println(Integer.toHexString(b));//将字节类型数据已16进制输出
}
字符串之间的转换
//字符串与
//数字转字符串3种方法
int i =2;
String str1 = Integer.toString(i);
String str2 = String.valueOf(i);
String str3 = i + "";
//字符串转数字2中方法
String str ="3";
int y = Integer.valueOf(str);
int z = Integer.parseInt(str);
装箱&拆箱
int i =5;
//将int 装换成integer类类型
Integer it= new Integer(i);
//自动装箱
Integer it = i;//直接使用=号将基础类型转换成封装类型
//将innteger 装换成int 类型
int y = it.valueOf(it);
//拆箱,与装箱相对,将封装类型转化成基本类型
int y = it;
Character 封装类
//char 对应的封装类是character
char c ='c';
Character C = c;//自动装箱
c = C;//自动拆箱
character 常用方法
//is系列可以使用代码补全查看
System.out.println(Character.isLetter('a')); //ture
System.out.println(Character.isDigit('7'));//ture
System.out.println(Character.isWhitespace('a'));//false
System.out.println(Character.isUpperCase('a'));//false
System.out.println(Character.isLowerCase('a'));//ture
- mac快速整理代码:command + shift + F
String 封装类
字符串创建
String str = "eric";//JAVA虚拟机遇见字面值就自动创建一个字符对象
String str1 = new String("very"); //通过new创建一个对象
char [] char1 ={'c','o','o','l'};
String str2 = new String(char1);//通过字符数组创建字符串
String str3 = str + ' ' +str1+' ' + str2;
System.out.println(str3); //eric very cool
//生成0-Z字符池
String pool = new String();
for (int i = '0'; i < 'Z'; i++) {
pool += (char) i;
}
System.out.println(pool);
字符串分割
String[] aa = "aaa|bbb|ccc".split("\\|");//以|未分割标志进行分割。
for (int i = 0; i < aa.length; i++) {
System.out.println("--" + aa[i]);
}
生成随机字符串
String str5 = new String();
for (int i = 0; i < 5; i++) {
while(true){
// System.out.println();
int i1 = (int)(Math.random()*100);
if((i1>'0')&(i1<'Z')){
str5 += (char)i1;
break;
}
}
System.out.println(str5);
}
String与StringBuffer 的区别
//作为参数时前者不可以被修改,后者可以被修改
public class test extends 数字封装类 {
public static void main(String[] args)
{
String str1 = "eric";
tell(str1);
System.out.println(str1);
}
public static void tell (String s)
{
s = "ere";
}
}
//eric
public class test extends 数字封装类 {
public static void main(String[] args)
{
StringBuffer str2 = new StringBuffer("eric");//注意创建的区别
tell(str2);
System.out.println(str2);
}
public static void tell (StringBuffer s)
{
s.append("y");
}
}
//ericy
str + = “y”;会改变,但是内部是从新创建了一个内存空间的。
StringBulider 类似StringBuffer只不过具有线程安全,速度更快。
数组
- 数组复制
System.arraycopy(src, srcPos, dest, destPos, length)
src: 源数组
srcPos: 从源数组复制数据的启始位置
dest: 目标数组
destPos: 复制到目标数组的启始位置
length: 复制的长度
- Arrays
Arrays是针对数组的一个工具类,调高对数组的操作效率。
int [] a = new int[]{0,1,2,3,4};
int [] b = Arrays.copyOfRange(a, 0,3);//(目标,起始位,长度)
//
System.out.println(Arrays.toString(a));//将数组转换成字符串
//
Arrays.sort(a);//进行排序
//搜索
Arrays.sort(a);
System.out.println("数字 4出现的位置:"+Arrays.binarySearch(a, 4));
//判断两个数组是否相等
Arrays.equals(a, b);
//使用一个值填充整个数组
Arrays.fill(a, 5);
数学方法
常用方法
- Math所有的方法都是静态的所以可以直接使用类名.方法名
long l = Math.round(12.6);
double d= Math.floor(14.3);
double d2 = Math.ceil(13.5);
double d3 = Math.random();
//数学方法
float f1 = 7.4f;//注意定义float的格式
//四舍五入
int F1 = Math.round(f1);
//0~1之间的随机数
float f3 = (float)Math.random();
float f4 = Math.sqrt(f3);
float f5 = Math.pow(2,3);
Date 时间类
// 创建时间
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY/MM/DD-HH/mm/ss");
System.out.println(simpleDateFormat.format(date));
// 从字符串中解析日期
String string = "2017/02/11-14:20:21";
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("YYYY/MM/DD-HH:mm:ss");
Date date2 = simpleDateFormat2.parse(string);
System.err.println(date2);
calendar 时间类
一般时间操作采用calendar类,不适用Date 类
Calendar c= Calendar.getInstance();
int year = c.get(Calendar.YEAR);//获取年,下类似
int moth = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);//这个月的第几天
int day1 = c.get(Calendar.DAY_OF_WEEK);
int min = c.get(Calendar.MINUTE);
int sec = c.get(Calendar.SECOND);
int millsec = c.get(Calendar.MILLISECOND);//当前毫秒数
Date d = c.getTime();//将calendar 转换为Date对象
附 while 循环计算三位简单密码
package reward;
public class number {
public static void main(String[] args) {
String mima = "123";
String m = new String();
while(true)
{
int x = (int)(Math.random()*10);
char c = mima.charAt(0);
if(Integer.parseInt(Character.toString(c))==x)
{
m =String.valueOf(x);
System.out.println("破解1/3");
while(true)
{
int x1 = (int)(Math.random()*10);
char c1 = mima.charAt(1);
if(Integer.parseInt(Character.toString(c1))==x1)
{
m +=String.valueOf(x1);
System.out.println("破解2/3");
while(true)
{
int x2 = (int)(Math.random()*10);
char c2 = mima.charAt(2);
if(Integer.parseInt(Character.toString(c2))==x2)
{
m +=String.valueOf(x2);
System.out.printf("破解完成,是%s",m);
break;
}
}
break;
}
}
break;
}
}
}
}
/*
破解1/3
破解2/3
破解完成,是123
*/
附 递归算法求N阶乘
//求阶乘
package reward;
public class d {
public static void main(String[] args) {
// TODO Auto-generated method stub
// d(3);
System.out.println(d(10));
}
public static double d (double n)
{
if(n==0)
{
return 0;
}
if(n==1)
{
return 1;
}
return n*d(n-1);
}
}