java学习( 持续更新)

x.append(y) y接在x后面

英文

balance:余额
extends:继承
override:重写,覆盖
annual:年薪

快捷键

快捷键 ctrl+h 看到类的继承关系
定位 ctrl + b
一键整理代码格式的快捷键是 Ctrl + Alt + L
在这里插入图片描述

数组

创建数组

int[] numbers = new int[5]; // 创建一个包含 5 个整数的数组

可以在创建数组的同时赋初值,也可以单独初始化数组元素:

int[] numbers = {1, 2, 3, 4, 5}; // 初始化数组并赋初值
numbers[0] = 10; // 单独初始化数组元素

数组初始化为 [](空括号)和 null 有着不同的含义:

数组初始化为 []:

当我们声明一个数组并初始化时,如果使用 [] 表示空的初始值,即数组已经创建但没有元素被赋值。这种情况下,数组的长度为0。
示例代码:

int[] numbers = {}; // 声明一个空数组,长度为0

数组初始化为 null:

当一个数组被赋值为 null,表示该数组引用不指向任何有效的数组对象,即数组对象不存在。这时数组变量虽然声明了,但它并没有引用任何实际的数组对象,也没有分配内存空间。

int[] numbers = null; // 将数组引用变量赋为null,表示该引用不指向任何数组对象
字符串

比较两个字符串内容是否相当:str1.equals(str2)

解题思路

先完成代码的正常业务,再考虑健壮性。

包装类

这里直接用double的话无法解决数组为空的情况的返回。 可以用包装类Double解决。

 public class Homework01{

	public static void main(String[] args){
			A01 p1 = new A01();
			double num[] =  {1,3,4,5};
			Double res = p1.max(num);
			if (res != null){
				System.out.println(p1.max(num));
			}
			
	}
}
class A01 {
	// 要考虑代码的健壮性

	public Double max(double[] array){
		// this.array=array;
		if(array != null && array.length > 0){
			double max = array[0];
		for(int i = 1; i < array.length ; i ++){
			if (array[i] > max){
				max = array[i];
			}
		}
		return max;
	}
	else return null;
		

}
}
运算符

运算符的优先级是固定的,按照优先级从高到低的顺序排列如下:

一元运算符:++, --, ~, !
乘性运算符:*, /, %
加性运算符:+, -
移位运算符:<<, >>, >>>
关系运算符:<, >, <=, >=, instanceof
相等运算符:==, !=
位运算符 AND:&
位运算符 XOR:^
位运算符 OR:|
逻辑运算符 AND:&&
逻辑运算符 OR:||
条件运算符:? :
赋值运算符:=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

j=i++; 先赋值再自增;
j=++i; 先自增再赋值。

在构造器中用另一个构造器
class Employee {
	
	String name;
	char gender;
	int age;
	String career;
	double sale;
	public Employee(String job,double sale){
		this.job = job;
		this.sale = sale;
		
	}
	public Employee(String name,char gender, int age){
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	public Employee(String job,double sale, String name,char gender,int age){
		this(name, gender, age);//访问之前的构造器
		this.job = job;
		this.sale = sale;
	}
	
}
随机数
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int randomNumber = random.nextInt(3); // 生成一个范围在 0 到 2 的随机数
        System.out.println(randomNumber);
    }
}
switch
switch (expression) {
    case value1:
        // 当 expression 的值等于 value1 时执行的代码块
        break;
    case value2:
        // 当 expression 的值等于 value2 时执行的代码块
        break;
    // 可以有更多的 case 分支
    default:
        // 当 expression 的值与所有 case 不匹配时执行的代码块
}
接收用户的输入
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个数字:");
        
        // 接收用户输入的数字
        int number = scanner.nextInt();
        
        System.out.println("您输入的数字是:" + number);

        scanner.close();
    }
}
可变参数
 public static void printNumbers(int... numbers) {
  
}
继承和多态

看的韩顺平老师的课 通过廖雪峰的网站补充 记录如下:
如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。
向上转型实际上是把一个子类型安全地变为更加抽象的父类型:

Student s = new Student();
Person p = s; // upcasting, ok
Object o1 = p; // upcasting, ok
Object o2 = s; // upcasting, ok

和向上转型相反,如果把一个父类类型强制转型为子类类型,就是向下转型(downcasting)。例如:

Person p1 = new Student(); // upcasting, ok
Person p2 = new Person();
Student s1 = (Student) p1; // ok
Student s2 = (Student) p2; // runtime error! ClassCastException!

Person类型p1实际指向Student实例,Person类型变量p2实际指向Person实例。在向下转型的时候,把p1转型为Student会成功,因为p1确实指向Student实例,把p2转型为Student会失败,因为p2的实际类型是Person,不能把父类变为子类,因为子类功能比父类多,多的功能无法凭空变出来。

Java的实例方法调用是基于运行时的实际类型(等号右边)的动态调用,而非变量的声明类型(等号左边)。这个非常重要的特性在面向对象编程中称之为多态。多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。多态具有一个非常强大的功能,就是允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。

Java 中的属性访问是根据编译时类型确定的,而方法访问是根据运行时对象的类型确定的。

属性访问:根据编译时类型确定。即使引用指向的对象是子类的实例,也只有在引用的类中定义的属性才能被访问,而不是实际对象的类型。

方法访问:根据运行时对象的类型确定。在调用对象的方法时,实际执行的是该对象所属类中定义的方法,而不是引用类型指定的方法。这种行为被称为动态绑定或运行时多态。

Object类

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值