java学习笔记

基础概念

字面量

整数

小数

字符串""

字符 ‘’

布尔

变量

数据类型 变量名 = 数据值

整数 int

浮点 double

变量的基本用法

输出打印

参与计算

修改记录的值

在一个语句中可以定义多个变量

int a =1, e = 0, c= 3;

计算机的存储规则

text image sound三种数据

java 是强类型语言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LqDY32ZZ-1678363072683)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-06 19.37.55.png)]

long类型要在数字后面加L

float类型要在后面加F

但double不哦那个

布尔类型boolean

最好完全避免使用浮点数进行比较

BigDecimal类可以用来比较

字符拓展

(数据类型)变量名 强制转换

unicode 比如 char c =‘\u0061’==>a

实例变量

从属于对象

使用

static int age;
demo08.age

如果不进行初始化,这个类型的默认值是0 0.0

布尔值 是false

常量

final 不能被修改

修饰符,不存在先后顺序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JmUZjJB3-1678363072684)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-07 15.24.52.png)]

字符串连接符

int a =10;

int b =20;

“”+a+b //1020

a+b+“” //30

三元运算符

x ? y : z

如果x==true ,则结果为y,否则结果为z

包机制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZIp9Jtm-1678363072684)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-07 19.05.23.png)]

import 包名

可以在后面加*来导入该package下所有的包

Javadoc

/**
*@author
*@version
*@since
*/

用/**+回车就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDIPtyOi-1678363072685)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-07 19.38.47.png)]

java流程控制

用户交互Scanner

import java.util.Scanner
  Scanner scanner = new Scanner(System.in);
	if (scanner.hasNext()){
    	String str = scanner.next();
    	System.out.println(str);
  scanner.close();
    
  }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0NHUrrc-1678363072685)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-07 19.51.40.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akNFZc3Q-1678363072686)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-07 19.53.30.png)]

顺序结构

一句一句执行

选择结构

if单选择

if(布尔表达式){

}

  • equals() 判断是否相等

if双选择

if

elif

嵌套的if结构

if(){

​ if(){

}

}

switch多选择结构

switch(expression){
  case value:
    	//语句
    	breakcase value:
			break;
  default :
    
}

循环结构

while循环

while(){

}

do while循环

即使不满足条件,也至少执行一次

do{
  
  
}while();//先do后while,至少执行一遍
For循环
for(int i = 1;i<=100;i++){
  
}
增强for循环
int[] numbers = {10,20,30,40,50};
for(int x :numbers){
  System.out.println(x);
  
}

break continue

break 用于强制退出循环(不终止程序)

continue 用于跳出某次循环(跳过未执行的语句)

关于goto关键字(label)

int count = 0;
outer: for(i=0;i<150;i++){
	for(int j=2;j<i/2,j++){
			if(i%j==0){
				continue outer;
			}
	System.out.println(i+"");
	}

}

java方法

何谓方法

  • java方法是语句的集合,他们在一起执行一个功能

==》方法是解决一类问题的步骤的有序组合

​ 方法包含于类或对象中

​ 方法在程序中被创建,在其他地方被引用

  • 设计方法的原则 ==》一个方法只完成一个功能

方法的命名用驼峰原则

方法的定义

修饰符 返回值类型 方法名(类型参数 参数名){

···

方法体

···

return 返回值;

}

方法调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Az4JuoFx-1678363072686)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 02.59.47.png)]

方法的重载

重载就是在一个类中,有相同的函数名称,但参数不同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTgKqtj2-1678363072686)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 15.54.47.png)]

程序会根据参数自动选择使用哪个参数的方法

  • 方法名称必须相同
  • 参数列表必须不同
  • 方法的返回类型可以相同也可以不相同

命令行传参

cd ../ 返回上一级

使用命令行给main函数传递参数 String args[]

可变参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CikdkCRo-1678363072687)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 16.05.56.png)]

在指定参数类型后加一个省略号…

递归

方法自己调用自己

递归头 (尽头)

边界条件

前阶段

返回阶段

递归体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zurEWsf8-1678363072687)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 16.17.20.png)]

数组

数组的定义

相同类型数据的有序组合

数组的声明

int[] nums; //定义(首选)
int nums[];  //效果也一样
nums = new int[10];//这里面可以存放十个int类型的数字
nums[0] =1;//赋值
int[] a = {1,2,3,4};//静态初始化
int[] b =new int[10];//动态初始化:包含默认初始化

数组的四个基本特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1m9NjNi-1678363072687)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 17.29.21.png)]

数组使用

for each循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bwyQoYtx-1678363072687)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 19.53.27.png)]

数组可以作为参数也可以作为返回值

多维数组

二维
int[][] array = {(1,2),(2,3),(3,4)};

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3tFNdJGH-1678363072688)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 20.06.21.png)]

Arrays类

Arrays.toString(数组) 把数组打印出来,直接打印数组是哈希表形式

Arrays.sort(数组) 对数组进行排序(升序)

Arrays.fill 填充

冒泡排序

public class maopao_sort {
    public static void main(String[] args) {
    int[] test = {2,45,3,5,7,3};
        int[] sortedTest = sort(test);
        System.out.println(Arrays.toString(sortedTest));
    }
    public static int[] sort(int[] a){
        int temp = 0;
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j < a.length-1-i; j++) {
                if(a[j+1]>a[j]){
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] =temp;

                }

            }
        }
        return a;
    }
}

稀疏数组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pDw3lGzT-1678363072688)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 20.43.31.png)]

面向对象OOP

物以类聚,分类的思维模式

属性+方法=类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsCdnTbN-1678363072688)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 21.13.09.png)]

什么是面向对象

以类的方式组织代码,以对象的组织数据

抽象

三大特性

  • 封装
  • 继承
  • 多态

类和对象的关系

类是一种抽象的数据类型,他是对某一类食物整体描述/定义,但是并不能代表某一具体的事物

对象是抽象概念的具体实例

创建于初始化对象

使用new创建对象

//一个项目只存在一个main方法
public class Student{
	//属性:字段
	String name;
	int age;
	//方法
	public void study(){
		System.out.println(this.name+"在学习");
	//this 在类里成员方法调用属性或者另一个程序方法要加this
	}
}
//创建对象
Student xiaohong = new Student();
Student xiaoming = new Student();
xiaoming.name = xiaoming;
xiaohong.name = xiaohong;
xiaoming.age = 18;

构造器详解

也称构造方法,在创建对象必须调用的

一个类即使什么也不写,也存在构造器

必须与类名相同且无返回值

实例化初始值

一旦定义有参构造,无参构造必须显示定义[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivTk8Yti-1678363072688)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-08 21.39.08.png)]

alt + insert 可以自动生成构造器

小结

  • 类与对象

    类是一个模板:抽象,对象是一个具体实例

  • 方法:定义 调用

  • 对应的引用

​ 引用类型: 基本类型

​ 对象是通过引用来操作的:栈–》堆

  • 属性:字段Feild 成员变量

    默认初始化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QtfhCHPq-1678363072688)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 00.36.13.png)]

  • 对象的创造和使用

​ 必须使用new 关键字创造对象,构造器

​ 对象的属性

​ 对象的方法

  • 类:

    静态属性 属性

    动态行为 方法

封装

高内聚,低耦合

通常,应禁止直接访问一个对象数据的实际表示,而应通过操作接口来访问,这称为信息隐藏

private :私有

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLq52IjQ-1678363072689)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 00.47.28.png)]

有的时候得用公共方法来调用私有属性

继承

父子关系

public class Student extends Person{
}

子类继承父类用extends

子类拥有父类的方法和属性

public

protected

default

private

默认继承object类

java中只有单继承,没有多继承(一个子类只能有一个父类,一个父类可以有多个子类)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBjIGE1B-1678363072689)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 10.26.45.png)]

超类

super.属性或者方法

调用父类的构造器,必须在子类构造器第一行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIs7aUBB-1678363072689)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 10.33.14.png)]

方法重写 override

父类的引用指向了子类

静态方法的调用只和左边,定义的数据类型有关

重写只和非静态方法有关

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaZqBdSR-1678363072689)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 10.44.25.png)]

重写需要有继承关系,子类重写父类

​ 方法名必须相同

​ 参数列表必须相同

​ 修饰符:范围可以扩大,不能缩小 private==》public

​ 抛出的异常:范围,可以被缩小,但不能扩大

多态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0hk5QKm-1678363072690)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 10.58.11.png)]

可以改为((student) s2).eat

注意事项

  • 多态是方法的多态,属性没有 两个类型都有,执行子类;父类子类有父类没有,异常
  • 父类和子类,有联系 类型转换异常!ClassCastException!
  • 存在的条件:继承关系:方法需要重写,父类引用指向子类对象 Father f1 = new Son();
  • static方法,属于类,不属于实例;final 常量 ;private方法 这些都不能重写

instanceof

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4CisbiID-1678363072690)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 11.29.53.png)]

是否存在父子关系

类型之间的转化

Person student = new Student();//父类引用指向子类的对象

Student obj = (Student) student;//可能会丢失一些精度

static

静态变量 =》类变量(多线程)

可以用 类名.属性 调用

方法可以直接用,而非静态不可以直接调用要先new

public class Person{
	{
	//匿名代码块
	}
static{
//静态代码块
}
  public Person{
    
  }
}
匿名代码块不能直接调用
静态代码块直接调用,且只执行一次
先输出静态代码块,再输出匿名代码块,再输出构造方法

import static java.lang.Math.random;//静态导入包

一个类被final定义则不能被继承

抽象类

abstract修饰的类

抽象方法只有抽象的名字没有方向的实现,抽象类的所有方法,继承了他的子类,都必须实现他的方法

public abstract class Action{
	public abstract void doSomething();
	 

}

不能new这个抽象类,只能靠子类去实现它:约束

抽象类中可以写普通方法

抽象方法必须在抽象类中

接口

只有规范 自己无法写方法

约束和实现的分离:面向接口编程

接口的本质是契约

interface

类可以实现接口 implements 接口

定义常量:public static final int a =0;

作用

  • 约束
  • 定义一些方法,让不同的人实现
  • public abstract
  • public static final
  • 接口不可以被实例化,接口中没有构造方法
  • implemens可以实现多个接口
  • 必须要重写接口的方法

内部类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wta2Cu1K-1678363072690)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 18.05.55.png)]

内部类可以访问外部类的私有属性

但是内部类被static就拿不到属性了

一个java里面可以有多个class类,但是只能有一个public class

异常机制 Exception

什么是异常

程序运行中出现的不期而至的各种情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cj28FUpH-1678363072690)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 19.18.57.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOcovAvl-1678363072690)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 19.22.27.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvOwYuV6-1678363072691)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 19.22.39.png)]

阿斯顿法国红酒快乐!

捕获异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xMtMkjtV-1678363072691)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 19.29.55.png)]

catch里面写想要捕获的异常类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ig1njePo-1678363072691)(/Users/chenwenshuo/Library/Application Support/typora-user-images/截屏2023-03-09 19.33.48.png)]

支持捕获多个异常

但只能出一个

printStackTrace()打印错误的栈信息

public void test(int a, int b ) throws ArithmeticException{
if (b==0){
	throw new ArithmeticException();

}//主动抛出异常 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值