lesson Twelve 2018-05-02 01:24:19
foreach:
JAVA5的新特征之一,在遍历数组、集合方面
语法:for( part1:part2 ) {part3} 的语法:
part1:定义一个局部变量,类型与part2中的元素类型一致.
part2:被遍历对象obj,一个数组对象,或者是带有泛性的集合.
part3:循环体
1 String str[] = new String[5]; 2 str[0]="字符串数组1"; 3 str[1]="字符串数组2"; 4 str[2]="字符串数组3"; 5 str[3]="字符串数组4"; 6 str[4]="字符串数组5"; 7 for (String string : str) { 8 System.out.println(string); 9 } foreachequals:
位于java.lang.Object类下,java.lang.Object类是所有类的根父类。
1.只能处理引用类型变量
2.equals 比较两个引用类型变量的地址值是否相等
==:
1.基本数据类型,根据基本数据类型的值判断是否相等,相等返回true,反之返回false,两端数据类型可以不同,在不同的情况下,也可以返回true/false
2.引用数据类型,比较引用类型变量的地址值是否相等
1 public static void main(StringDemo1[] args) { 2 String str1 = "AA"; 3 String str2 = "AA"; 4 String str3 = new String("AA"); 5 6 System.out.println(str1 == str2);//true 7 System.out.println(str1.equals(str2));//true 8 9 System.out.println(str1==str3);//false 因为是引用数据类型,比较的是首地址值 10 System.out.println(str1.equals(str3));//true 因为String已经重写了equals方法,比较的是内容 11 12 13 } equals 1 //重写equals方法 2 public boolean equals(Object obj) { 3 if (this == obj) { 4 return true; 5 } else if (obj instanceof Order) { 6 Order o1 = (Order) obj; 7 return this.orderId == o1.orderId&& this.orderName.equals(o1.orderName); 8 } 9 return false; 10 11 } 尝试重写equals方法String类对象的内存结构
包装类:
8种基本数据类型各对应着一个类,此类即为包装类。
1.装箱:基本数据类型与包装类之间的转换。基本数据类型--->对应的包装类 :调用包装类的构造器。
1 //装箱:基本数据类型--->对应的包装类 :调用包装类的构造器。 2 Integer integer = new Integer(i); 3 System.out.println(integer.toString()); 4 5 integer = new Integer("123abc"); 6 // 异常: java.lang.NunberFormatException 7 System.out.println(integer.toString()); 8 9 Float f = new Float("12.3f"); 10 System.out.println(f); 11 12 boolean b = false; 13 Boolean b1 = new Boolean("false"); 14 System.out.println(b1); 装箱:基本数据类型--->对应的包装类2.折箱:包装类与基本数据类型之间的转换。包装类--->基本数据类型: 调用包装类的XXXValue()方法
1 int i1 = integer.intValue(); 2 float f1 = f.floatValue(); 3 boolean b2 = b1.booleanValue(); 4 System.out.println(i); 5 System.out.println(f1); 6 System.out.println(b2); 折箱:包装类--->基本数据类型 1 1 //JDK5.0以后,自动装箱和折箱 2 2 int a = 20; 3 3 Integer a1 = a;//自动装箱 4 4 5 5 int a2 = a1;//自动折箱3.包装类与String之间的转换:
1 int i1 = 10; 2 3 4 //包装类--->String类:调用String类的重载的valueOf()方法 5 例如: 6 String str1 = String.valueOf(i1); 7 System.out.println(str1); 8 9 10 //String类--->包装类:调用该包装类的parseXXX()方法 11 例如: 12 int i2 =Integer.parseInt(str1); 13 System.out.println(i2);总结:Xxx类型(A)转化为Xxx类型(B)时,以B为基准,去B中找相应的方法进行转换。
toString:
toString() java.lang.Object 类的toString()方法的定义如下:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
1.当打印一个对像的引用时,实际上默认调用的就是这个对像的toString()方法
2.当打印的对像所在的类,没有重写object中的toString()方法,那么,调用的就是object中定义的toString方法,
返回此对像所在的类的全类名(包名+类名)及对应的堆空间对像实体的首地址值
3.当我们打印的对像所在的类重写了toString()方法,调用的就是重写的toString方法
通常这样重写,将对像的属性信息返回。
1 public class demo1 { 2 public static void main(String[] args) { 3 Person person = new Person(); 4 System.out.println(person); 5 System.out.println(person.toString()); 6 } 7 } 8 9 class Person { 10 private String name = "XiaoMing"; 11 private int age = 22; 12 13 @Override 14 // 自动生成 15 public String toString() { 16 return "Person [name=" + name + ", age=" + age + "]"; 17 } 18 19 //手动实现 20 // public String toString() { 21 // return "name:" + name + " age:" + age; 22 // } 23 } toString的重写static:
静态的,可以修饰属性(类变量)、方法、代码块(初始化块)、内部类。
修饰属性: 1.1.由类创建的所有对像,都共用这一个属性 1.2.当其中一个对像对此属性进行修改,会导致其它对像对此属性的一个调用。 1.3.类变量,static修饰的属性,随着类的加载而加载,而且独一份 1.4.实例变量,非static修饰的属性,各个对像都独立拥有,随着对像的创建而加载 1.5.静态的变量可以直接通过“类.类变量”的形式来调用 1.6.类变量的加载是要早于对像。 1.7.类变量存在于静态域中。
修饰方法(类方法): 2.1.随着类的加载而加载,在内存中也是独一份 2.2.可以直接通过“类.方法”的方式调用 2.3.内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法是可以调用静态的属性或静态的方法 静态的方法内是不可以有this或super关键字的! 注:静态的结构(static的属性、方法、代码块、内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构
1 public class demo1 { 2 public static void main(String[] args) { 3 sportsMan m1 = new sportsMan("aa", 23); 4 sportsMan m2= new sportsMan("bb", 21); 5 m1.name= "cc"; 6 m2.age= 22; 7 m1.nation="China"; 8 9 System.out.println(m1); 10 System.out.println(m2); 11 System.out.println(m1.nation); 12 System.out.println(m2.nation); 13 System.out.println(sportsMan.nation); 14 } 15 } 16 17 class sportsMan{ 18 //实例变量 19 String name; 20 int age; 21 //类变量 22 static String nation; 23 public sportsMan(String name, int age) { 24 super(); 25 this.name = name; 26 this.age = age; 27 } 28 @Override 29 public String toString() { 30 return "sportsMan [name=" + name + ", age=" + age + ", nation=" 31 + nation + "]"; 32 } 33 } static
转载于:https://www.cnblogs.com/Fkuennhvo/p/8978407.html
相关资源:JAVA上百实例源码以及开源项目