day1

发布时间 2023-07-25 20:51:56作者: 水吉z

Java基础1(基础知识)

符号

'\n' 换行
'\t' 把前面字符串补齐到8/8的倍数

数据类型

  • 整数、
  • 小数、
  • 字符串、" "
  • 字符、 ''
  • 布尔、
  • 空类型、 null
  • 数值取值范围:double>float>long>int>short>byte

标识符

小驼峰命名法:方法、变量 例:name firstName
大驼峰命名法:类名 例:Student GoodStudent

键盘录入

import java.util.Scanner;
Scanner sc = new Scanner(System.in); 
int i = sc.nextInt(); 

运算符表达式

整数只能得到整数,小数得到结果可能不精确
数据类型不同不能进行运算,进行转换:
隐式转换:小->大 取值范围小的和大的进行运算,小的会先提升为大的 byte short char在运算时,会先提升为int,再进行运算
显式转换:大->小
强制转换:大给小,别超过取值范围

字符串的'+'拼接操作

自左向右:

System.out.println(1 + 2 + "acc" + 2 + 1)

结果为3abc21

自增 自减

++a 先加后用

运算符

  • 赋值运算符
  • 逻辑运算符:
    逻辑与:& (都真为真)
    逻辑或:| (都假为假)
    逻辑异或:^(相同假不同真)
    逻辑非:! (取反)
  • 短路逻辑运算符 && ||
  • 三元运算符:关系表达式 ? 表达式1 : 表达式2 (关系表达式真,结果为表达式1,假为2)

原码反码补码

图片名称

Java基础2(流程控制语句)

if

  if(a > 1){
    return;
  }
  if(b > 1){
    return;
  } else if{

  } 
    ...
    else {

  }

注意:

  • 大括号可以在另起一行,但是建议写在第一行的末尾
  • 如果只有一句代码,那么可以省略不写。大括号尽量不省
  • 对布尔类型变量进行判断,不要使用==号,直接把变量写在小括号里即可

for

for(i = 0; i < = 100; i++){
    return;
}

while

while(i < 10){
    return;
}

注意:

  • 循环结构选择:
    for(知道循环次数或者范围)
    while(知道循环的结束条件)

switch

switch(score) {
		case 1,2,3,4,5 -> System.out.println("工作日");
		case 6 -> System.out.println(2); //简化
		case 7 -> {
			System.out.println(3);
		}
		default->{
			System.out.println(4);
		}
		}

简化写法
注意:

  • case后面不能是变量 case给出的不能重复
  • switch其他知识点: default的位置(任意位置,习惯在最下面)和省略(不建议)
  • case穿透,break省略会导致case穿透(多个case语句重复了,考虑用此简化代码)
  • 新特性 也可以写成如上,但是 -> 和 :不能同时用
  • 大括号可以省略(只有一句)
  • switch(有限个数据一一列举,任选其一)和if第三种格式各自使用场景(范围的判断)

数组

一种容器,可以存储同种数据类型的多个值。

  • 存储数据时,需要结合隐式转换考虑
    Alt text
int[] arr = {1, 2, 3};
int[] arr2 = new int[3]; //动态初始化 
arr[0] = 1;// 赋值

Java基础3(方法)

最小的执行单元

格式:

public static void playGame() {
    //最基础
		System.out.println(1);
		
	}
	public static void method(int num1, int num2) {
    //带参数,数量和类型必须一一对应
		int result = num1 + num2;
		System.out.println(result);
	}
	public static int getSum(int num1, int num2) {
	//带返回值
		int result = num1 + num2;
		System.out.println(result);
		return result;
	}

void 表示方法没有返回值 return 方法没有返回值,可以不写,写了表示结束方法 有返回值必须写

方法重载

  1. 方法名相同
  2. 参数不同(类型不同,个数不同),不包括形参名不同,与返回值无关

数据类型

  1. 基本数据类型:
    传递时传递的是真实的数据,形参的改变,不影响实际参数的值
  2. 引用数据类型(new出来的):
    传递时传递的是地址值,形参的改变,影响实际参数的值
  3. 方法的值传递,变量只在对应的方法中有效

Java基础4(面向对象)

成员变量(代表属性)
成员方法(代表行为)

Javabean类

描述一类事物的类

测试类

编写main方法的类

定义类

public class GirlFriend{
    private int age;
    private String name;
    private String gender;
    

    public void setName(String name){
        this.name = name;
        //局部变量表示测试类中调用方法传递过来的值
        //等号右面name就近原则,表示成员位置的name,
    }
    public String getName(){
        return name;
    }

    public void setAge(int age){
        if(age >= 18 && age <= 50){
            this.age = age;
        }else{
            System.out.println("非法参数")
        }
    }
    public int getAge(){
        return age;
    }
}

GirlFriendTest.java
public class GirlFriendTest{
    public static void main(String[] args){
        GirlFriend gf1 = new GirlFriend();

        gf1.setName("雅洁");
        gf1.setAge("24");

        System.out.println(gf1.getName());
    }
}

注意:

  1. 类名首字母建议大写,需要见名知意,驼峰模式。
  2. 一个Java文件中可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名(实际开发中建议还是一个文件定义一个class类)
  3. 成员变量的完整定义格式是: 修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

封装

原则:
对象代表什么,就得封装对应的数据,并提供数据对应的行为

  1. private关键字是一个权限修饰符
  2. 可以修饰成员(成员变量和成员方法)
  3. 被private修饰的成员只能在本类中才能访问
  4. 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
  5. 提供"setXxx(参数)"方法,用于给成员变量赋值,方法用public修饰
  6. 提供"getXxx()"方法,用于获取成员变量的值,方法用public修饰

this

  • 可以区别成员变量和局部变量
  • 就近原则
  • 见上方代码

构造方法

概述:创造对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化
特点:

  1. 方法名与类名相同,大小写也要一致
  2. 没有返回值类型,连void都没有
  3. 没有具体的返回值(不能由return带回结果数据)
  4. 没写任何构造方法,会给一个空参构造方法
public class GirlFriend{
    public GirlFriend(){
        //空参构造
        System.out.println("1");
    }
    public GirlFriend(String name, int age){
        //有参构造
        this.name = name;
        this.age = age;
    }
}
public class GirlFriend{
     public static void main(String[] args){
        GirlFriend gf1 = new GirlFriend("雅洁", 23);
     }
}

系统会根据传的参数调用对应的构造
无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

标准Javabean

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法:
    无参构造方法
    带全部参数的构造方法
  • 成员方法
    提供每一个成员变量对应的setXxx()/getXxx()
    如果还有其他行为,也需要写上
public class User{
    private String username;
    private String password;
    private int age;
    
    public User(){

    }
    public User(String username, String password, int age){
        this.username = username;
        this.password = password;
        this.age = age; 
    }
    public void setUsername(String username){
        this.username = username;
    }
    public String getUsername(){
        return(username);
    }
    ...
//password, age依次get set方法
}

内存图

Alt text
Alt text
Alt text

基本/引用数据类型

基本数据类型:

  • 整数类型
  • 浮点数类型
  • 布尔类型
  • 字符类型
    二者区别
    Alt text

this内存原理

Alt text
Alt text

成员变量和局部变量

成员变量:类中方法外的变量
局部变量:方法中的变量