javac java两个命令的区别
javac 把.java文件编译称 .class文件 java执行 calss文件
一个java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作
- 类: 类是一个模板,它描述一类对象的行为和状态
- 对象: 对象是类的一个实例,有状态和行为
- 方法:方法就是行为
- 实例变量: 每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定
public class
public static void main( String[] args){
}
- public 访问修饰符
- static 关键字
- void 返回类型
- main方法名
主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
访问控制修饰符: default, public, protected private
java变量:
- 局部变量
- 类变量
- 成员变量
继承
- 一个类可以由其他类派生,而且存在一个类具有所有你需要的属性或者方法,可以将新创建的类继承该类
接口
- 在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
- 接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
java中用@什么意思:注解 @Override 重写
类的成员
- 属性:对应类中的成员变量
- 方法: 对应类中的成员方法
- 构造器:类中的默认初识化值
- 代码块:对Java 类或对象进行初始化
- 内部类:类的成员使用、类的使用
New 对象 在堆中 栈中存放p1的局部变量
属性不同于局部变量 属性也放在堆中 heap
共同点: Public class和class都是对类进行声明,用于定义类
一、Public class: 1 如果使用了该类,则类名必须与文件名一致 2 被public修饰的类可以被其他包访问
二、Class: Class类可以访问Public类,但不能被其他包访问
【Conclusion】每个文件中只能有不多于1个Public类(也可以没有),可以理解为main部分
笔记:https://blog.csdn.net/PorkBird/article/details/113666542
成员变量 直接定义在类{} 内部 局部变量
构造器 作用 创建对象,初始化属性值 如果没有显示的,就会默认一个空的构造器
JAVABean java的可重用组件
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get,set方法
表对应的类可以生成一个javaBean
通过空参的构造器去造对象 通过反射 去造对象
int转换称 字符串 "" + int
UML 类图
关键字 this
重写 override overwrite 子类对父类方法的重写 super 关键字
框架 = 注解 + 反射 + 设计模式
子类继承父类,父类一定要有无参构造器 java默认的在调用子类构造方法前先调用父类的构造方法,如果你没有指定调用父类的哪个构造方法,那么java默认调用父类无参数的构造方法。
什么时候用反射
- 动态的时候,根据外部条件,创建对象
反射和封装不矛盾 封装是为了告诉你不要用,不是不能用
通过反射 创建对应的运行时类的对象 newInstance() 内部调用了运行时类的空参构造器 创建对象,一定要用构造器
动态创建代理类对象, 代理类并没有显示的定义,而是根据被代理的对象是谁去动态创建 代理对象,体现了反射的动态性
AOP 面向切面编程 不改变源代码添加新的功能 有点像 装饰器,在函数的前后,动态的执行其他的逻辑
java se 开始
输入语句:
/*
如何从键盘获取不同类型的变量,需要使用Scanner类
具体步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化;
3.调用Scanner类的相关方法,来获取指定的变量。
*/
import java.util.Scanner;
class IFTest{
public static void main(String[] args){
//声明一个Scanner
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.println(num);
}
}
java如何 写 for
for(int i :arr){ sout(i) }
module project package


