笔记
代码执行顺序
/**
* @qvthor liuwenzheng
* @date 2021/4/21 8:24
*/
public class Demo03 {
int size = 0 ;
//代码块
//
{
size = 10 ;
}
//静态变量
static int count = 30 ;
//静态代码块
static {
count = 10 ;
}
public Demo03(){
System.out.println("构造方法");
System.out.println(count); //10
System.out.println(size); //10
}
}
1、静态static修饰的内容在整个类中最先执行
1.1static同时修饰变量和代码块,谁写在前面先执行
2、代码块和类属性其次执行
2.1普通属性和代码块,谁写在前面谁先执行
3、构造方法的执行
static
1、static修饰的内容 没有对象也可以存在,或者说:有没有对象在内存中都可以存在
2、普通的属性,方法,内部类,要求有对象才可以存在具体的内存中
12两条原则在语法上不能冲突 具体表现在:静态的成员不能使用非静态的成员
final 最终的
被final修饰的成员值在程序中不能发生改变
log4j = log for java
封装
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:12
*/
public class Demo01 {
public static int add (int a, int b){
return a+b ;
}
public static void main(String[] args) {
System.out.println(1+1);
System.out.println(1+2);
System.out.println(1+4);
System.out.println(1+5);
System.out.println(1+6);
System.out.println(add(1,1));
System.out.println(add(1,2));
System.out.println(add(1,3));
}
}
上述案例:为了避免不断的+操作,吧两数相加写入在add方法中,后续直接调用add方法。把具体操作流程统一管理在add方法中,该过程就是封装的一种具体表现形式
访问权限修饰符
修饰符 | 同一个类 | 同一个包 | 子类 | 所有的类 |
---|---|---|---|---|
pubic 公有的 | √ | √ | √ | √ |
protrcted 受保护的 | √ | √ | √ | |
defaule 默认的 | √ | √ | ||
provate 私有的 | √ |
类的封装
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:12
*/
public class Demo02 {
//public
//protected
//private
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name ;
}
}
属性的访问权限尽量给的很小
对外单独提供访问方法
setName给属性赋值
getName读取属性的值
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:12
*/
public class Demo01 {
public static int add (int a, int b){
return a+b ;
}
public static void main(String[] args) {
System.out.println(1+1);
System.out.println(1+2);
System.out.println(1+4);
System.out.println(1+5);
System.out.println(1+6);
System.out.println(add(1,1));
System.out.println(add(1,2));
System.out.println(add(1,3));
}
}
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:12
*/
public class Demo02 {
//public
//protected
//private
//把数学私有化
private String name;
private int age;
//对外提供属性的设置方法
public void setName(String name) {
this.name = name;
}
//对外提供属性的访问方法
public String getName() {
return this.name ;
}
}
Doemo02测试
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:39
*/
public class teseDemo02 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02() ;
demo02.setName("小明");
System.out.println(demo02.getName());
}
}
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:39
*/
public class Demo03 {
public String name ;
public int age ;
}
Demo03测试
/**
* @qvthor liuwenzheng
* @date 2021/4/21 10:39
*/
public class testDemo03 {
public static void main(String[] args) {
Demo03 demo03 =new Demo03() ;
demo03.name = "小明";
System.out.println(demo03.name);
}
}