java类型转换
数值类型与包装数值类型:
1. 数值类型转换包装类型:
例:new
int a = 100;
Integer n =new Integer(a);
包装类.valuOf()
int a = 100;
Integer a = Integer.valueOf(a);
2. 包装类型转数值类型:
例:对象.XXValue(); XX:基本类型
Integer a = new Integer(100);
int b = a.intValue(); //b =100
拆箱与装箱:
自动装箱:基本类型可以自动转成包装类型
自动拆箱:包装类型可以自动转成基本类型
引用类型:
java.lang.String
1. 数值类型转String:
例:
int a = 9;
String b = a+"";"a"
int a = 9;
String b = String.valueOf(a);
2. String转数值类型:
概念:数值必须类似
例:
String s = "123"; //整数字符串
int a = Integer.parseInt(s);
String s1 ="12.3";
double a = Double.parseDouble(s1);
String s = "abc";
int a = Integer.parseInt(s);错误
String转char[] 或byte[]
特征:
·字符数组:1个汉字1个字符 1个空格是1个字符
·字节数组:1个汉字是2个字节 1个空格是1个字节
例1:
String s = "java有 时候没有想象的那么牛B123";
char[] crr = s.toCharArray();
System.out.println(crr.length);
for (int i = 0; i < crr.length; i++) {
System.out.print(crr[i]+" ");
}
char[]->String
String s1 =new String(crr);
System.out.println(s1);
s1 = String.valueOf(crr);
System.out.println(s1);
System.out.println();
例2:
String s3 = "OmG你们 真坏123";
byte[] brr = s3.getBytes();
System.out.println(brr.length);
Byte[]->String
String s4 =new String(brr);
System.out.println(s4);
3.String其他用法;
indexOf();
lastIndexOf();
trim();去掉首尾空格
concat()追加
length()
equals();
equalsIgnoreCase();不区分大小写判断相等
contains();//判断指定字符是否在字符串中
charAt();输出指定下标的字符
startsWith()
endsWith();
split(); 分割
subString(int index)
subString(int start,int end);从start下标开始
取end-start个字符
String s6 = "你刚刚刚刚放了一个屁";
System.out.println(s6.lastIndexOf("刚刚"));
Java.lang.StringBuffer:可变字符串 增强字符串
StringBuffer sb =new StringBuffer("java其实不难");
//1.增
sb.append("你觉得可能吗?");
sb.insert(0, "html和");
//2.删
//sb.delete(4, 9);
//sb.deleteCharAt(4);
//3.改
sb.replace(5, 9, "c#");
sb.setCharAt(4, '与');
//4.查
System.out.println(sb);
System.out.println(sb.toString());
//StringBuffer-->String
String string = sb.toString();
//String---->StringBuffer
StringBuffer sb1= new StringBuffer(string);
String与StringBuffer添加数据的区别:
1.String :字符串的方法不能改变本身的值
StringBuffer:方法能改变本身的值
3. StringBuffer比String添加数据效率要高
编码:一个字符在内存中按几个字节存储
国标码: gbk编码: 一个中文对应2个字节
国际编码: iso-8859-1编码:一个中文对应1个字节 不能正确表示中文
通用: utf-8编码: 一个中文对应3个字节
案例1:
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "中国你好";
byte[] brr = s.getBytes();//gbk;
System.out.println(brr.length);
//iso-8859-1:国际编码
brr = s.getBytes("iso-8859-1");
System.out.println(brr.length);
//utf-8:
brr = s.getBytes("utf-8");
System.out.println(brr.length);
}
案例2:利用编码计算汉字个数
public static void main(String[] args) {
String s = "123中国你好abc";
//gbk:一个汉字2个字节
byte[] brr = s.getBytes();
System.out.println(brr.length);
//iso-8859-1:一个汉字1个字节
try {
brr = s.getBytes("iso-8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(brr.length);
}
4. java.lang.Object:
1)hashCode();:返回对象在内存中地址的整数形式
hashcode码:内存中地址的整数形式
特征:
计算机每次new出来的对象的(地址)hashcode码一定不相等。
内涵:
比较我们自己定义的类的对象相等的时候,必须重写hashCode方法和equals方法。计算机定义好的类不需要我们自己重写hashCode方法和equals方法。
判断特征:先执行hashcode方法然后触发equals方法
2)toString():
每个了都有一个toString 方法:这个方法是从Object
类中继承过来的:类名@hashcode码的十六进制形式
案例1:
public class Student extends Object{
String name;
int age;
public Student(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 100;
}
@Override
public boolean equals(Object obj) {
//判断obj真实对象是Student才有比较的可能
if(obj instanceof Student){
Student s = (Student)obj;
if(s.name.equals(this.name)&&s.age==this.age){
return true;
}else{
return false;
}
}else{//obj真实对象不是Student
return false;
}
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name+"\t"+age;
}
}
public static void main(String[] args) {
Student s =new Student("小强", 18);
System.out.println(s.hashCode());
Student s1 = new Student("小强", 18);
System.out.println(s);//自动调用toString
System.out.println(s1.hashCode());
System.out.println(s==s1);//比较的是地址:肯定不相等
System.out.println(s.equals(s1));
String str = new String("abc");
String str1 = new String("abc");
System.out.println(str==str1);
System.out.println(str.equals(str1));
Integer t1 =new Integer(4);
Integer t2 = new Integer(4);
System.out.println(t1==t2);
System.out.println(t1.equals(t2));
}
5. java.lang.Math:
static abs()返回double值得绝对值
int a = -10;
Math.abs(a); //10
static ceil(小数):天花板 返回>=小数的最小整数
double a = 9.1;
Math.ceil(a);//10
static floor(小数):地板 返回<=小数的最大整数
double a = 9.9;
Math.floor(a); //9
static random(); 返回[0 1)之间的随机数
double a = Math.random();
static round(小数):四舍五入
6. java.lang.Date:
//取当前时间
Date date =new Date();
System.out.println(date.toString());
System.out.println(date.toLocaleString());//过时
System.out.println(date.toGMTString());
java.text.SimpleDateFormat;
String string = "2013-9-27";
//日期的转换类
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
//字符串日期转成date日期
Date dates = sdf.parse(string);
System.out.println(dates.toLocaleString());
//date日期转成字符串日期
String string2 = sdf.format(dates);
System.out.println(string2);
public static void main(String[] args) throws ParseException {
//取当前时间
Date date =new Date();
System.out.println(date.toString());
System.out.println(date.toLocaleString());//过时
System.out.println(date.toGMTString());
System.out.println("--------------");
String string = "2013-9-27";
//日期的转换类
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
//字符串日期转成date日期
Date dates = sdf.parse(string);
System.out.println(dates.toLocaleString());
//date日期转成字符串日期
String string2 = sdf.format(dates);
System.out.println(string2);
}
java.text.SimpleDateFormat;
String日期-------date日期
format(Date date):String 把字符串日期转成Date日期
parse(String str):Date 把Date日期转成字符串日期