目录
cmd——环境变量——系统变量
1. 新建——JAVA_HOME——jdk安装目录(jre.1.8.0)

2. 编辑——PATH变量——新增——%JAVA_HOME%\bin

3. 编辑环境变量——C:\Program Files (x86)\Java\jre1.8.0_291\bin

4. 新建——CLASSPATH变量
cmd 输入javac 则环境配置成功
TODO 标识符:注释标识符,可快速调整到代码内容
ctrl + D :复制到当前行
变量定义:改变向量的存储
变量声明、变量赋值、变量使用
注意:在使用变量前要先声明
- package chapter01;
-
- public class Java02_variable {
- public static void main(String[] args) {
- // TODO 变量
- // 可以改变向量的存储
- // 1.变量声明
- String name;
- // 2.变量赋值
- name = "lisa";
- // 3.变量使用
- System.out.println(name);
- //声明赋值:
- String age = "18";
- }
- }
定义:标识数据的符号,主要用去取名,如 String name = "lisa"; 中的name
命名规则
基本数据类型-数值型-整数
基本数据类型-数值型-浮点型
基本数据类型-字符型
基本数据类型-布尔型
数据类型转换
小的类型可以自动转换大的数据类型
bit > byte > short > int > long > float > double
大的数据类型需要()小括号强制转换数据类型
如double d = 1.2,int a = int (d)
引用数据类型
定义:可以被引用的数据类型
运算符定义:参与数据运算的符号,java定义,不能自定义
表达式:运算符和变量组合一起
一元运算符:一个变量参与计算,如 a ++
++a ,a 在前面先加1,++a 后计算
a++,a 在a++后面加一,a后计算
二元运算符:二个变量参与计算,如 a + b
算术表达式:是有结果的,如1+5=6,结果是数据类型最大的
如1/2=0,因为1 2 都是int型,结果也是int型,最小使用类型是int
= :就是赋值运算符
将右边的变量赋值给左边的变量
如: int age = 18
注意:需要考虑数据类型的关系,小的数据类型赋值给大的数据类型
复合运算符:+=、-=、*=、%=
a+=1相当于a=a+1
使用复合运算符,数据类型不会改变
定义:比较数据
关系运算符有:== 、!=、>、<、>=、<=等
定义:用于描述多个表达式之间的关系
语法结构:(条件表达式1)逻辑表达式 (条件表达式)
结果:布尔类型,true\false
与运算:&一假为假
或运算,|一真为真
短路与运算:&&,根据第一个条件的结果,是否执行第二个,如 false && false,第二个不用执行
短路或运算:||,根据第一个的结果,是否执行第二个,第一个为真不执行第二个
非运算符:!,相反运算符
定义:三个变量参与运算的运算符
语法结构:变量 = 条件表达式1 ?条件表达式2:条件表达式3
当1为true,变量等于 2,为false等于3
定义: 计算机在执行代码工程中,对指令代码执行顺序
定义:分析问题时,以问题涉及到的事或者物为中心的分析方式
类:类就是归纳和整理,如动物是一个类
类名命名规范首字母大写
对象:具体的事物,如猫,类的实例化 , new Cat()
new 是一个关键字,创建一个具体对象,使用一次创建一次
一般new创建的对象会赋值变量,方便重复使用
变量的类型就是对象说的类型,Cat c = new Cat(),Cat是引用数据类型
对象是将内存地址赋值给变量,所以变量是引用了内存中的变量,所以叫引用变量
特殊对象:没有引用的对象,String user = null
类的语法结构:
- package chapter01;
-
- public class Java04_object {
- public static void main(String[] args) {
- // TODO 面向对象
- // 创建类
- class Cat {
- // 属性
- int age = 3;
- String name = "喵喵";
- // 方法
- // 方法声明
- void say(){
- System.out.println("miao~");
- }
-
- }
- // 声明类,对象
- Cat c = new Cat();
- // 执行方法
- c.say();
- }
- }
案例
- package chapter01;
-
- public class Java05_object {
- public static void main(String[] args) {
- // TODO 面向对象
- Teacher t = new Teacher();
- t.name = "rose";
- t.teach();
- Student s = new Student();
- s.name = "xiaoMing";
- s.study();
-
- }
- }
- class Teacher {
- String name;
- void teach() {
- System.out.println(name +"老师在上课");
- }
- }
-
- class Student {
- String name;
- void study(){
- System.out.println(name + "学生在听课");
- }
- }
对象属性
定义:类的对象相同属性
语法:属性类型 名称 = 属性值,即声明并初始化变量;如 String color = "pink";
属性在构造对象是会默认初始化,初始化的值取决于属性值
变量的作用域仅仅在当前的大括号内有效
属性不仅在当前类可以用,在对象中也可以使用
对象方法
声明语法:【方法结果返回数据类型,没有结果写viod】 方法名 () { 逻辑块 }
调用方法:对象.方法名()
- package chapter01;
-
- public class Java06_objectAttribute {
- public static void main(String[] args) {
- // TODO 对象实例化
- Animate a = new Animate();
- a.name = "dog";
- // 对象方法调用
- a.say();
- }
- }
- class Animate {
- String name;
- // 对象属性
- String color = "pink";
- //声明方法,boolean 是返回结果的数据类型,没有结果是void
- boolean say(){
- System.out.println(name+"可以说话,颜色是"+color);
- // 方法返回结果
- return false;
- }
- }
对象方法参数
语法: 方法名(参数类型1 名称1, 类型2 名称2)
传递多个参数时,需要注意的是
可变参数:类型确定,个数不确定
语法:参数类型... 参数名称
可变参数声明在最后
- package chapter01;
-
- public class Java07_objectParam {
- public static void main(String[] args) {
- // TODO 方法参数
- Cloths c = new Cloths();
- c.use(3,"pink","old");
- }
- }
- class Cloths{
- String use(int year,String color,String... type){
- System.out.println("使用了"+year+"年,颜色是"+color+",类型是"+type);
- return "使用了"+year+"年,颜色是"+color;
- }
- }
方法参数传值方式
基本语法: package 包名
主要用于管理类
一个类可以没有包,一个包只能在源文件中使用一次,不可多次使用
为了与类区分,类是首字母大写,包全是小写
Java 中 存在不同的包相同的类名,可以用包进行区分
在使用类的情况下,使用类的全名(包名+类型)
主要用于导入类,import 只能在package 后,class 前使用
可多次使用,导入多个类
如需导入package中的多个类,可使用通配符*来简化操作
如果import 导入了不同包相同名称的类,在类前需要加包名进行区分
用于构造对象
如果类中没有构造方法,java会自动添加一个公共的无参构造函数
基本语法:类名(){ }
- package chapter01;
-
- public class Java08_object_constructor {
- // TODO 面向对象-构造函数
- public static void main(String[] args) {
- Test t = new Test();
- // t.getFood("tomato");
- t.UserName ="tomato";
- }
- }
- class Test{
- String UserName;
- // 构造方法
- Test (String name){
- name = UserName;
- System.out.println("food:"+name);
- }
- }
- package chapter01;
-
- public class Java09_extends {
- public static void main(String[] args) {
- Son s = new Son();
- s.test();
- }
- }
- class Dad {
- String name = "大明";
- int age;
- void run(){
- System.out.println("I can run");
- }
- }
- class Son extends Dad {
- String name = "小明";
- void test(){
- System.out.println("super.name"+super.name); //大明
- System.out.println("this.name"+this.name); // 小明
- }
-
- }
- package chapter01;
-
- public class Java09_extendsConstructor {
- public static void main(String[] args) {
- Son2 s1 = new Son2();
- Son2 s2 = new Son2();
- Son2 s3 = new Son2();
-
- }
- }
- class Dad2 {
- String name ;
- // 构造方法
- Dad2 (String dadname) {
- name = dadname;
- System.out.println("dad have run");
- }
- }
- class Son2 extends Dad2 {
- Son2() {
- super("candy");
- }
- }
- package chapter01;
-
- public class Java10_polymorphism {
- public static void main(String[] args) {
- // TODO 多态
- Person P1 = new Person();
- P1.test();
- Person P2 = new Girl();
- Person P3 = new Boy();
- P1.test();
- P2.test();
- P3.test();
- // P1.testGirl 不能这样写,多态的创建取决于变量类型 Person
-
- Girl r = new Girl();
- r.testGirl();
- }
- }
- class Person {
- void test() {
- System.out.println("test..");
- }
-
- }
- class Girl extends Person {
- void testGirl() {
- System.out.println("testGirl..");
- }
- }
- class Boy extends Person {
- void testBoy() {
- System.out.println("testBoy..");
- }
- }
- package chapter01;
-
- import java.awt.font.TextHitInfo;
-
- public class Java11_chongzai {
- // TODO 重载
- public static void main(String[] args) {
- User u = new User(0001);
- u.login(18);
- u.login("lisa");
- u.login("lisa","175");
- }
- }
- class User {
- void login(String name){
- System.out.println("name");
- }
- void login(int age) {
- System.out.println("age");
- }
- void login(String name,String height){
- System.out.println("height");
- }
- User(){
- // 与 User() u = new User(99);相同,即this调用自己的构造函数
- this(99);
- }
- User(int id){
- System.out.println("id");
- }
- }
- package chapter01;
-
- public class Java12_rewrite {
- AAA a = new AAA(); //a.count = 11
- BBB b = new BBB(); // b.count = 21
- AAA c = new BBB();//c.cont = 21
-
- }
- class Parent{
- void info(String name ,String sex){
- System.out.println("Parent");
- }
- }
- class Child extends Parent{
- @Override
- void info(String name, String sex) {
- System.out.println("Child");
- }
- }
- class AAA {
- int a = 10;
- int count(){
- return a++;
- }
- }
- class BBB extends AAA {
- int a = 20;
- int count(){
- return a++;
- }
- }
定义:方法调用自身
阶乘:!5 = 5*4*3*2*1
递归方法有跳出的逻辑
- package chapter01;
-
- public class Java13_recursive {
- public static void main(String[] args) {
- // TODO 递归
- int result = compute(3);
- System.out.println(result);
- }
- public static int compute(int num){
- if (num <= 1){
- return 1;
- }else {
- return num * compute(num - 1);
- }
- }
- }
-
public:公共的,公共类只能有一个,且和源文件名相同,main方法是JVM调用,不考虑权限问题
private:同类,私有的,同类中可以使用,
default:同类,同包(路径),当不设定权限时,同一个包内可以使用,包权限(相同包路径)
protected:同类,同包,子类,子类可以访问
外部类:就是在源码中直接声明的类,不能用private和protected 修饰
内部类:在类中声明的类
内部类当做外部类的属性使用,需要创建外部类的属性使用
- package chapter01;
- // TODO 内部类和外部类
- // 外部类
- public class Java15_outerClass_and_innerClass {
- public static void main(String[] args) {
- A a = new A();
- A.B b = a.new B();
-
- }
- }
- class A {
- // 内部类
- class B {
-
- }
- }
-
- package chapter01;
-
- public class Java16_singleMode {
- public static void main(String[] args) {
- // TODO 单例模式
- // User22 U = new User22();
- User22 instance = User22.getInstance();
- }
- }
- class User22{
- // 构造方法
- private static User22 user22= null;
- private User22() {
-
- }
- // 方法 静态方法不能访问成员方法
- public static User22 getInstance() {
- if (user22 == null) {
- user22 = new User22();
- }
- return user22;
- }
- }
- package chapter01;
-
- public class Java17_final {
- public static void main(String[] args) {
- // TODO final关键字
- Student01 s = new Student01("lisi");
- System.out.println(s.name);
- }
- }
- class Student01 {
- final String name;
- public Student01(String name) {
- this.name = name;
- }
- }
- package chapter01;
-
- public class Java18_abstract {
- public static void main(String[] args) {
- // 抽象类、抽象方法 abstract
- catSon c = new catSon();
- c.eat();
- }
- }
- // 抽象类
- abstract class Cat {
- //抽象方法
- public abstract void eat();
- void say(){
-
- }
- }
- class catSon extends Cat {
- // 重写抽象方法
- public void eat() {
- System.out.println("eat fish");
- };
- }
- package chapter01;
-
- public class Java19_interface {
- public static void main(String[] args) {
- // TODO 接口 interface
- computer c = new computer();
- }
- }
- interface USB {
-
- }
- interface supply extends USB {
- public void powerSupply();
- }
- interface receive extends USB {
- public void powerReceive();
- }
- // 实现类
- class computer implements supply {
- public supply usb1;
- public receive usb2;
- // 重写父类接口的方法
- public void powerSupply(){
- System.out.println("电脑提供能源");
- usb1.powerSupply();
- usb2.powerReceive();
- }
- }
- package chapter01;
-
- public class Java20_enum {
- public static void main(String[] args) {
- // TODO enum 枚举
-
- }
- }
- enum City {
- GUANGDONG("广东",01),BEIJING("北京",02),SHANGHAI("上海",03);
- City(String name,int code) {
- this.name = name;
- this.code = code;
- }
- public String name;
- public int code;
- }
定义:在特殊场合下,使用类的方法或功能采用匿名类
- package chapter01;
-
- public class Java21_anonymous {
- public static void main(String[] args) {
- // TODO 匿名类
- Me m = new Me();
- // 只使用类中的方法的类
- // 匿名类
- m.sayHi(new Person21() {
- // 等同于下面的 lisa 类
- @Override
- public String name(){
- return "lisa";
- }
- });
- // m.sayHi(new lisa());
- // m.sayHi(new rose());
-
- }
- }
- abstract class Person21 {
- public abstract String name();
- }
- class lisa extends Person21 {
- public String name(){
- return "lisa";
- }
- }
- class rose extends Person21 {
- public String name(){
- return "rose";
- }
- }
- class Me {
- public void sayHi(Person21 person21) {
- System.out.println("Hi"+person21.name());
- }
- }
- package chapter01;
-
- import java.security.PublicKey;
-
- public class Java22_bean {
- public static void main(String[] args) {
- // TODO bean 规范
- User21 u = new User21();
- u.setId(0001);
- u.setPassword("admin");
- }
- public static boolean login(User21 u) {
- if (u.getId() == 0001){
- return true;
- } else {
- return false;
- }
- }
- }
- // bean 对象 数据模型
- class User21 {
- private int id;
- private String password;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
- }
如果属性和局部变量相同,会有限访问局部变量
- package chapter01;
-
- public class Java23_scope {
- public static void main(String[] args) {
- // TODO 作用域
- Fish f = new Fish();
- f.test();
- }
- }
- class Pig {
- public static String name = "pig";
- }
- class Fish extends Pig {
- public static String name = "fish";
-
- public static void test() {
- // name 作用域在 test 方法里,局部变量
- String name = "yu";
- System.out.println(name);
- System.out.println(Pig.name);
- }
- }
访问权限修饰符的关键字
定义类、函数、变量的关键字
补充:
定义类和类之间的关键字
建立实例和引用实例的关系 ,判断实例关键字
异常处理的关键字
- public void str2int(String str) throws Exception { //这里将得到的异常向外抛出
- try {
- System.out.println(Integer.parseInt(str));
- } catch(NumberFormatException e) {
- //TODO 这里可以做一些处理,处理完成后将异常报出,让外层可以得到异常信息
- throw new Exception("格式化异常");
- }
- }
用于包的关键字
其他修饰符关键字