一、快捷键:生成代码alt + shift + s
二、复习:
1、 static
a. 可以修饰属性的方法:类属性/类方法,静态属性/方法
b. 都属于类
c. 被类的所有对象共享
同种类型之间可以相互调用:
a. 静态的可以直接调用静态的
b. 非静态的可以直接调用非静态的
c. 非静态的可以直接调用静态的
d. 静态的可以通过对象调用非静态的
示例:
1 package 第五天; 2 3 public class Demo { 4 private static int s; 5 private int i; 6 7 public void fun() { 8 System.out.println(i); 9 System.out.println(s); 10 } 11 12 public static void main(String[] args) { 13 System.out.println(s); 14 Demo demo = new Demo(); 15 System.out.println(demo.i); 16 } 17 }
2、封装类
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
原则:
-
- 类不要放在默认包中
- 优先使用封装类型
示例:(定义Bean)
JavsaBean:
- 属性私有化并提供相应的getter/setter方法
- 保证要有默认的构造方法
1 package 第五天; 2 3 public class stu { 4 private Integer id; 5 private String name; 6 private boolean gender; 7 private Float score; 8 9 public stu() { 10 11 } 12 13 public stu(Integer id, String name, Boolean gender, Float score) { 14 super(); 15 this.id = id; 16 this.name = name; 17 this.gender = gender; 18 this.score = score; 19 } 20 21 /** 22 * @return id 23 */ 24 public Integer getId() { 25 return id; 26 } 27 28 /** 29 * @param id 要设置的 id 30 */ 31 public void setId(Integer id) { 32 this.id = id; 33 } 34 35 /** 36 * @return name 37 */ 38 public String getName() { 39 return name; 40 } 41 42 /** 43 * @param name 要设置的 name 44 */ 45 public void setName(String name) { 46 this.name = name; 47 } 48 49 /** 50 * @return gender 51 */ 52 public boolean isGender() { 53 return gender; 54 } 55 56 /** 57 * @param gender 要设置的 gender 58 */ 59 public void setGender(boolean gender) { 60 this.gender = gender; 61 } 62 63 /** 64 * @return score 65 */ 66 public Float getScore() { 67 return score; 68 } 69 70 /** 71 * @param score 要设置的 score 72 */ 73 public void setScore(Float score) { 74 this.score = score; 75 } 76 77 /* (非 Javadoc) 78 * @see java.lang.Object#toString() 79 */ 80 @Override 81 public String toString() { 82 return "stu [id=" + id + ", name=" + name + ", gender=" + gender + ", score=" + score + "]"; 83 } 84 }
测试代码:
1 package 第五天; 2 3 public class DemoTest { 4 public static void main(String[] args) { 5 stu stu1 = new stu(); 6 7 stu1.setId(111); 8 stu1.setName("tom"); 9 stu1.setGender(true); 10 stu1.setScore(99.9f); 11 12 System.out.println(stu1); 13 14 stu stu2 = new stu(222,"list", false, 77f); 15 System.out.println(stu2); 16 } 17 }
三、 正课
1、 封装深入
1 package 第七天; 2 3 public class 封装深入 { 4 public static void main(String[] args) { 5 int a = 99; 6 System.out.println(a + 1); 7 System.out.println(a - 1); 8 System.out.println(a * 1); 9 System.out.println(a / 1); 10 System.out.println(a % 1); 11 System.out.println(a++); 12 System.out.println(--a); 13 System.out.println(a >> 1); 14 15 Integer b = 4; 16 System.out.println(b.MAX_VALUE); 17 System.out.println(Integer.MIN_VALUE); 18 19 int max = Integer.min(23, -89); 20 System.out.println(max); 21 String binaryString = Integer.toBinaryString(24); 22 System.out.println(binaryString); 23 System.out.println(Integer.toBinaryString(12345)); 24 25 char aa = Character.toUpperCase('a'); //变大写 26 System.out.println(aa); 27 } 28 }
2、 装箱折箱
- 装箱:将基本数据类型的数据赋值给对应的引用数据类型;
- 折箱:将引用数据类型的数据赋值给对应的基本数据类型;
示例:
package 盛开着永不凋零; public class 装箱折箱 { public static void main(String[] args) { int a = 34; Integer b = a; //装箱 int c = b; //折箱 } //在JDK7之前不能自动装箱折箱 }
3、 代码块:
所有的java语句都必须写到代码块内。声明语句除外
- 静态代码块:
1 static { 2 3 }
- 构造代码快
1 { 2 3 }
- 结论
- 只要程序启动,就会运行静态代码模块中的代码
- 静态代码块只运行一次
- 当定义类的对象时,系统会依次调用:静态代码块---------构造代码快---------构造方法(其中,静态代码块只调用一次,构造方法块和构造方法是每
new一次就调用一次
- 示例:
1 package 盛开着永不凋零; 2 3 public class 装箱折箱示例 { 4 public 装箱折箱示例() { 5 System.out.println("gou zao daima"); 6 } 7 { 8 System.out.println("gou zao daima kuai"); 9 } 10 static { 11 System.out.println("jing tai daima kuai"); 12 } 13 public static void main(String[] args) { 14 new 装箱折箱示例(); 15 new 装箱折箱示例(); 16 new 装箱折箱示例(); 17 } 18 }