java基础学习笔记3

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计 本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。 阅读详情

java基础学习笔记3

对象转型

父类对象引用 指向 子类对象 叫 向上转型upcasting

例如:Person a=new Student();

a只能访问Person里面的成员,而不能访问Student里面新增的成员。

把父类转化为子类,叫向下转型 downcasting

例如:Student b=(Student)a;

现在b就可以访问Student里面的成员了。

instanceof
class Person {
    String name;
    int age;
}
class Student extends Person {
    int grade;
}

//定义两个类,一个父类一个子类
//子类 instanceof父类 true
//父类 instanceof子类 false
public class ins {
    public static void main(String[] args) {
        Person a = new Person();
        Student b = new Student();
        System.out.println(a instanceof Person); //true
        System.out.println(a instanceof Student); //false
        System.out.println(b instanceof Person); //true
        System.out.println(b instanceof Student);//true
    }
}
对象转型2
class Person {
    String name;
    int age;
    Person(String name){
        this.name=name;
    }
}
class Student extends Person {
    int grade;
    Student(String name,int grade){
        super(name);
        this.grade=grade;
    }
}
public class ins {
    public static void main(String[] args) {
        Person a = new Person("父类对象");
        Student b = new Student("子类对象",97);
        test(a);//打印传入的是一个普通person
        test(b);//打印成绩,传入的是一个学生
    }

    public static void test(Person p){
        if(p instanceof Student){
            Student a=(Student)p;
            System.out.println(a.grade);
            System.out.println("传入的是一个学生");
        }
        else
        {
            System.out.println("传入的是一个普通person");
        }
    }

}
多态=动态绑定

执行期间,根据时间的类型调用相应的方法。

1.必须有继承关系

2.必须有重写

3.必须父类引用 指向 子类对象

举个例子:

class Person {
    String name;
    int age;
    Person(String name){
        this.name=name;
    }

    public void run(){
        System.out.println("人在跑");
    }
}

class Student extends Person {
    int grade;
    Student(String name,int grade){
        super(name);
        this.grade=grade;
    }
    public void run(){
        System.out.println("学生在跑");
    }
}


class Teacher extends Person {
    String kemu;
    Teacher(String name,String kemu){
        super(name);
        this.kemu=kemu;
    }
    public void run(){
        System.out.println("老师在跑");
    }
}

class School{
    String xuexiaoname;
    School(String name){
        this.xuexiaoname=name;
    }
    public void studentRun(Person s){
        System.out.println(this.xuexiaoname);
        s.run();
    }
}


public class duotai {
    public static void main(String[] args) {
        Student a=new Student("小茗同学",99);
        Teacher b=new Teacher("王芳老师","教化学的");
        School c=new School("希望小学");

        c.studentRun(a);  //打印:希望小学 学生在跑
        c.studentRun(b);//打印:希望小学 老师在跑
    }

}
抽象类

关键词:abstract

一个方法现目前不用实现,但需要定义出来,就用abstract修饰。

修饰以后,这个类必须加上abstract。

类加上abstract以后,凡是继承这个类,子类都必须重写这个abstract方法。除非是另一个Abstract类继承他,就不用了重写,当然,要重写也是可以的。

抽象类就是残缺的类,不能被实例化出来。

抽象类里面可以没有抽象方法。

抽象类就算里面没有抽象方法,也一样不能被实例化。

抽象类里面可以有方法的实现,子类可以通过super调用这个实现的方法。

final

修饰变量,那么这个变量的值再也不会改变。

可以在函数传参括号里面用final,局部变量不变 public void func(final int i){}

修饰方法,那么这个方法不能被重写

修饰类,那么这个类不能被继承

interface

接口 是抽象方法和常量值定义 的集合。

接口里的声明的属性默认是public static final ,也只能是他。可以不写出来!

接口里的定义的方法都是abstract,也只能是他。可以不写出来!

接口里的定义的抽象方法是默认public,也只能是他。可以不写出来!

接口里面不能写完整的方法出来。

接口 可以多重实现。

一个类实现这个接口,那么接口里面所有的方法都必须实现。

实现的时候必须加public!

interface A {
     void testjiekou();
}

class B implements A
     public void testjiekou(){
        System.out.println("实现接口!");
    }
}


public class jiekoutest {
    public static void main(String[] args) {
        B b =new B();
        b.testjiekou();
    }
}

多重实现,多态性:

interface A {
    void eat();
}

interface B {
    void sing();
}

class C implements A, B {
    public void eat() {
        System.out.println("实现A的eat接口!");
    }

    public void sing() {
        System.out.println("实现B的sing接口!");
    }
}


public class jiekoutest {
    public static void main(String[] args) {
        A a = new C();
        a.eat();//a只能看到eat接口
        C c = (C) a;//向下转型一下
        c.sing();//就能看到sing接口了
    }
}

异常

运行期的错误。

try尝试 catch 捕获 throw抛出

异常有很多类型,他们会被抛出来,然后我们捕获这些异常,进行相应的处理,比如,提示成中文什么的。

简单例子:

   public static void main(String[] args) {
        try {
            int a = 4 / 0;
        }
        catch (ArithmeticException e){
            System.out.println("被除数不能为0");
            System.out.println(e);
           //java.lang.ArithmeticException: / by zero
            
            e.printStackTrace();//这个还可以显示行数
        }
    }

image-20200928134441729

声明类时,throws可能抛出的异常

在方法中就判断什么时候throw出这个异常

image-20200928134818071

finally:

无论如何都会执行,

用来进行资源的清除工作。比如:把打开的文件关闭掉。

如果继承一个类,父类有个方法throws异常,那么子类在重写这个方法时只能throws相同的异常或者干脆不抛出异常。

image-20200928163043990

在try catch时,这个catch的东西一定是先小后大。

自定义异常:

写个类,继承Exception,构造函数时写spuer(message):

class MyException extends Exception {
    private int id;
    public MyException (string message,int id){
        super (message) ;
        this.id = id;
    public int getid(){
        return id;
}

然后在另一个类的方法中直接throws这个异常,满足异常条件就throw new 这个异常并传入参数。

image-20200928162942224

一维数组

声明方式和赋值方式:

int[] a={3,4,5,6};

int b[]={5,4,5,9,8};

double[] c=new double[10];

for(int i=0;i<c.length;i++){
	c[i]=i+0.1;
}

内存分布:

int数组:

image-20200928163640039

引用数组:

image-20200928163659744

动态初始化:数组定义 与 元素分配空间和赋值 分开操作

image-20200928164003833

静态初始化:数组定义 与 元素分配空间和赋值 同时进行

image-20200928164026637

对象排序

package com.ufo.five;

class Date  {
    int year;
    int month;
    int day;

    @Override
    public String toString() {
        return "Date{" +
                "year=" + year +
                ", month=" + month +
                ", day=" + day +
                '}';
    }

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int compare(Date d) {
        return year > d.year ? 1
                : year < d.year ? -1
                : month > d.month ? 1
                : month < d.month ? -1
                : day > d.day ? 1
                : day < d.day ? -1 : 0;


    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }
}

public class datetest {


    public static void main(String[] args) {
        Date[] days =new Date[5];
        days[0]=new Date(2020,05,17);
        days[1]=new Date(2019,05,17);
        days[2]=new Date(2020,07,17);
        days[3]=new Date(2020,05,21);
        days[4]=new Date(2018,05,17);

        Date[] b=sortDate(days);
        for(Date bb:b){
            System.out.println(bb.toString());
        }
    }


    public static Date[] sortDate(Date[] a) {
        int len = a.length;
        for (int i = 0; i < len; i++) {
            for (int j = i+1; j < len-1; j++) {
                if (a[i].compare(a[j]) > 0) {
                    Date tp = a[i];
                    a[i] = a[j];
                    a[j] = tp;

                }
            }
        }
        return a;
    }
}

结果:

image-20200928170736977

数三退出游戏

500个小朋友手拉手围成圈,按123123123报数,数到三的小朋友自动退出,求最后一个活下来的小朋友最开始的位置。

package com.ufo.five;

public class quit3 {
    public static void main(String[] args) {
        boolean a[] = new boolean[500];
        for (int i = 0; i < a.length; i++) {
            a[i] = true;
        }
        int leftcount = a.length;
        int countNum = 0;
        int index = 0;
        while (leftcount > 1) {
            if (a[index] == true) {
                countNum++;
                if (countNum == 3) {
                    countNum = 0;
                    a[index] = false;
                    leftcount--;
                }
            }
            index++;
            if (index == a.length) {
                index = 0;
            }
        }

       
        for (int i = 0; i < a.length; i++) {
            if (a[i] == true) {
                System.out.println(i);
            }
        }


    }
}
//答案435
二维数组

image-20200928205348863

System.arrarycopy(数组1,开始位置,数组2,开始位置,复制长度)

image-20200928205545733

脑机接口中的视觉信号解码:原理、技术与应用 脑机接口中的视觉信号解码:原理、技术与应用​ ,人工智能,计算机视觉,大模型,AI,脑机接口(Brain - Computer Interface,BCI)作为一种革命性的技术,致力于搭建人脑与外部设备之间的直接通信桥梁,绕开传统的神经肌肉输出通路。其核心目标是解读大脑活动产生的信号,从而实现对外部设备的精准控制或信息交互。在众多脑机接口研究方向中,视觉信号解码因其独特的优势和广泛的应用前景,吸引了大量科研人员的关注。 阅读详情

相关推荐

Mac新手必看:nvm安装全攻略(含常见错误解决方案)

本文为Mac开发者提供nvm安装与使用全攻略,涵盖环境准备、安装步骤、Shell配置优化及常见错误解决方案。详细讲解如何利用nvm管理多Node版本,提升开发效率,特别针对国内用户提供网络问题解决技巧,是Mac新手必备的Node版本管理指南。

weixin_28839699的博客 1617

上转型对象是什么?

Person A=new Student();person类是父类,student类是子类 A就是上转型对象,父类对象引用子类对象 A、上转型对象不能操作子类新增的成员变量 正确的,编译时就是父类对象,父类不存在相关成员变量 B、上转型对象不能操作子类新增的方法 正确的,编译时就是父类对象,父类不存在相关方法,无法调用(编译的时候你是被当做父类对象) C、上转型对象可以操作子类继承或隐藏的成员变量 正确的,编译时就是父类对象,子类继承的变量父类自己也有,只不过运行时调用的是子类...

qq_40396568的博客 1379

【物理模拟】PBD算法详解

参考MatthiaMuller的十分钟物理(他就是PBD算法的发明者)

beidou111的博客 9499

多态Person p=new Student();

如果有两个类,一个类是Person类是父类,然后有一个类是子类Student类。 Person p=new Student(); 那么请问上面的这句话,在干什么? 这很明显是一个里氏转换,对吧。但是为什么要用里氏转换,你明明可以写成下面这个东西用。想用谁的方法就实例化谁 Person p =new Person(); Student S =new Student(); 回到第一句话上...

好学而不勤问非真好学者 2603

使用运放构建电压跟随器

运放,是运算放大器的简称 运算放大器是用模拟电子器件(如晶体管,场效应管,二极管等)构成的模拟集成电路,其特点是有很高的放大倍数和抗干扰能力,因此可以被设计成各种用途的派生电路,如电压比较器、窗口电路、波形发生电路等等,其中也有电压跟随器。 电压跟随器是一种具有100%电压负反馈的放大器电路,其特点是输出电压的幅度和极性都与输入电压相同,所以叫跟随器。典型线路如图所示: 运放跟随器有输入阻抗高,而输出阻抗低的特性,一般来说,输入阻抗可以达到几兆欧姆,而输出阻抗低,通常只有几欧姆,甚至更低。 在电

Code for Coffee 5万+

深入解析西门子S7通信协议:从抓包到实战应用

本文深入解析西门子S7通信协议,从环境搭建、抓包分析到实战应用,提供了一套完整的协议分析方法。通过Wireshark工具进行抓包分析,详细拆解了S7协议各层结构,并结合真实案例,展示了如何利用抓包技术解决通信故障、优化性能及进行安全审计,是掌握工业通信底层原理的实用指南。

weixin_29224529的博客 282

JAVA面向对象

JAVA面向对象 java类及类成员 1.属性 2.方法 3.构造器 4.代码块 5.内部类 面向对象三大特性 1.封装 2.继承 3.多态 关键字 1.this 2.supper 3.static 4.final 5.abstract 6.interface 7.package 8.import 类与对象(实例) 实例化的类即为对象 //类 class Person{ //属性 String name; int age; float weight; float height;

donger__chen的博客 439

1.STM32H743VGT6最小系统板

此款MCU具备较大算力进行频谱运算,为复杂数据运算提供更高效的保障。该MCU具备REV-V和REV-Y两个型号,后者为新版本。

Audiation88的博客 3800

Java学习笔记3 Java基础

1.1 书写方式 1.1.1 关键字 在Java语言中,已经定义好的,具有一定的功能或作用的单词,全部是小写的. Java中总共有51个关键字+2个保留字 byte short int long float double char boolean public private protected (default) final finally if else for while do switch case default break continue return class int...

gyct123的博客 238

RK3568平台(USB篇)USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

weixin_49303682的博客 1658

FC7300 SPI MCAL配置引导

Example - QMI8A01z外设:Example - QMI8A01z外设:

舊梦的博客 260

JAVA学习笔记DAY3——菜鸟教程Java基础

菜鸟教程面向对象之前的部分都走马观花看了一遍。用于突击学习和复习。

weixin_47227105的博客 1477

3. 动手运行第一个 SAP Fiori Elements 应用(ListReport 类型)

这个代理服务器能够自动监听我们 Fiori Elements 应用里向 ES5 Demo 系统发送的 OData 请求,拦截这个请求,并通过 Node.js 代码向 ES5 服务器转发,拿到响应数据后再交还给 Fiori Elements 应用。后者对自己发出的请求被代理这件事情一无所知。本文的任务是,大家按照我的介绍,在本地成功运行笔者准备的这个 Fiori Elements 应用。的错误消息, 说明大家安装的 Node.js 版本没有达到本地运行 Fiori Elements 的最低要求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1673

【Java学习笔记】3.Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。

qq_62052372的博客 805

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JAVA基础学习笔记3

Java数据结构 Java中的数据结构主要包括以下几种接口和类:枚举、位集合、向量、栈、字典(是一个抽象类,定义了键映射到值的数据结构)、哈希表、属性。 Java实例 https://www.runoob.com/java/java-examples.html 基础知识恶补完毕,开始边做题边学习。 1.问题: public static void main(String[] args...

一个被工科被虐了6年多的女生的technical blog 330

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java基础 学习笔记3

1.什么是类与对象 a.对象的概念:对特定一个存在事物 b.什么是面向对象:以自我为中心对待一个特定事物存在,需要自己描述出来的符合的条件 c.类:是对象的一个属性一个特征,是你描述的条件,条件符合的多个对象可以归纳为一个类,也可以说这个对象含有这个类。 d.什么是对象的属性:对象有的各种特征,他具有什么就是对象的属性。 e.什么是对象的方法:对象能干什么 f.类与对象的关系/区别:类是模子,确定...

weixin_43684054的博客 548

Java基础学习笔记3

今天听的是java的中级视频,倒是觉得好多东西只是会用,而不是理解,记之,以备后用(20160110) Test01 讲国际化,就是将一些文字(要求在不同的界面显示不同的语言)用变量代替,然后写 到.properties文件中  下面程序是对用户名,密码,登入成功这样的字分别在中文,英文的界面进行分别显示功能 package practice06; /** * 国际化 * 如果是要变化

moluchase的专栏 457

Java基础学习笔记(3)

Java入门(三)Java编程基础(2)1.2 Java中的变量1.2.1变量的定义1.2.2 变量的数据类型1.2.2.1 整数变量类型1.2.2.2 浮点类型变量1.2.2.3 字符类型变量1.2.2.4 布尔类型变量1.2.3 变量的类型转换1.2.3.1 自动类型转换1.2.3.2 强制类型转换1.2.4 变量的作用域 Java编程基础(2) 1.2 Java中的变量 1.2.1变量的定义 在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在内存单元中,每个内存单元都用一个标识符来

Lix_Lee的博客 1487

Java学习笔记第04期——Java基础语法Part3

Java 基础语法 Part3 在有关我笔记分享的博客中,我都会将MD笔记文件另外发布,方便朋友们下载学习。 Ayo大家好我是Tomatooo,这是我的Java学习笔记第4期,话不多说直插主题—— 变量 先讨论基本类型的变量 变量必须先定义后使用 示例: int age = 1; 上面定义了一个int类型的变量,名称为age,初始值为1。 不写初始值,变量就自动被赋予一个默认值,int类型默认值总是0。 注意:变量不但可以重新赋值,还可以赋值给其他变量 常量 定义变量的时候,如果加上final修饰符,这个

殴德Tomatooo的博客 1424

Java基础学习笔记(3)

一、String类:不可变的字符序列 String str = "ABCDEFG"; str += "javaEE"; //重新创建,并非衔接(不可变性) 1、String类的常用方法: * public String substring(int startpoint) * public String substring(int start, int end):返回从s...

weixin_44977914的博客 487

3、【狂神说Java】Java零基础学习笔记-Java方法

【狂神说Java】Java零基础学习笔记-Java方法

cuter_的博客 1417

JAVA基础学习笔记(3)

学习视频来自:B站宋红康JAVA基础 学习计划:50天学完 时间打卡:6.8 计划结束时间:7.20 学习集数:44–72 总集数:717 内容 1.关键字的保留和说明 关键字:有特殊含义,专门用途的字符串 保留字:命名时避开:goto,const 2.标识符及命名规则: 自己起名字的地方都是标识符 3.变量 变量类型,变量名=存储的值 int myAge=12 变量要先声明再使用。 4.数据类型: 整形 int:4字节 long:8字节(以l或L结尾) short:2字节 byte:-128-127

qq_38500150的博客 203

【JAVA基础学习笔记3】

Java基础 01 注释 单行注释 // 多行注释 /* 123 123 */ 文档注释 /** 123 */ 标识符和关键字 关键字 标识符 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线开始 首字符之后可以是任何字符组合 不能使用关键字作为变量名或者方法名 标识符市大小写敏感的 数据类型 基本类型 byte占1个字节范围:-128-127 short占2个字节范围:-32768-32767 int占4个字节范围:-2147483648-2147483647 long占8

modest5的博客 217

JAVA基础3-JAVA线程学习笔记(1)

JAVA线程学习笔记(1)1.1 基础类1.1.1 Runnable1.1.2 Thread1.1.3 Runable与Thread比较1.2 线程状态图1.3 基础方法1.4 线程基本概念1.4.1 竞态条件1.4.2 临界区1.4.3 丢失的信号1.4.4 虚假唤醒1.4.5 自旋锁1.5 Java内存模型1.6 Java内存模型的特性1.6.1 原子性1.6.2 可见性1.6.3 有序性1.......

代码让AI扣 298

Java 学习笔记(基础篇3)

定义一个包含元素 {1,2,3,4,5} 的整数数组,通过编程将数组中的元素进行反转(即第一个元素与最后一个元素交换位置,第二个元素与倒数第二个元素交换位置,以此类推),最后将反转后的数组元素依次打印输出(元素之间用空格分隔)。时,并不是把数组的所有元素复制一份传递给方法,而是把。实参:方法调用中的参数,等同于使用变量或常量;形参:方法定义中的参数,等同于变量定义格式;循环中使用两个指针((类型/个数/顺序)。

2302_79807388的博客 1068
上一篇: java基础学习笔记2
下一篇: java基础学习笔记4
UFOO2
博客等级 码龄6年 7粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值