Java语法 - 01

news2025/1/22 13:00:48

Java基础

Java 是一种广泛使用的高级编程语言,最初由Sun Microsystems1995年发布。它被设计为具有简单、可移植和面向对象的特性,以满足跨平台应用程序开发的需求。以下是一些关于 Java 的简介:

  1. 跨平台性:Java 程序可以在不同的操作系统(如Windows、Mac、Linux等)上运行,只需在每个平台上安装相应的Java虚拟机(JVM)即可。
  2. 面向对象:Java 是一种面向对象的编程语言,支持封装、继承和多态等面向对象的编程范式,使代码更易于组织、理解和维护。
  3. 高性能:Java 在运行时通过即时编译器将字节码转换为机器码,以实现接近原生代码的执行效率。
  4. 多线程支持:Java 提供内置的多线程支持,使开发人员能够编写并发执行的程序,有效地利用多核处理器和提高程序的性能。
  5. 大量的类库:Java 提供了丰富的标准类库,涵盖了各种常用的功能,如输入输出、网络通信、数据结构、图形界面等,开发人员可以快速构建应用程序。
  6. 广泛应用:Java 在企业级应用开发、移动应用开发(Android平台)、嵌入式系统、大数据处理等领域得到广泛应用。

移动操作系统 Android 大部分的代码采用 Java 编程语言编程。

Java和python差异

类型系统:Java是静态类型语言,需要在编译时确定变量的类型并进行类型检查;

Python是动态类型语言,变量的类型是在运行时确定的,无需显式声明类型。

1 环境搭建

1.1 JDK的下载与安装

JRE,是Java运行时环境的缩写。它是Java开发平台的一部分,用于在计算机上执行Java程序。

JRE包含了Java虚拟机(Java Virtual Machine,JVM),以及Java所需的其他库和组件,包括运行Java应用程序所需的类库、资源文件和配置文件等。当你安装JRE后,就能够在计算机上运行Java程序,而不需要进行Java开发。

JDK,( Java Development Kit ),Java开发工具。【包含JRE】【Java开发】

JRE 和 开发必备的工具。
工具包含:编译工具javac.exe 和 运行工具java.exe
想要开发Java应用程序,就必须安装JDK

总结起来,JRE是用于在计算机上运行Java程序的环境,而JDK是用于开发和编译Java程序的环境。

1、JDK下载,建议下载1.8版本

连接:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

账户:https://blog.csdn.net/weixin_39990804/article/details/103425012

查看是否安装成功,win+R ,输入cmd进入控制台,输入java -version查看版本,如下则安装成功

在这里插入图片描述

参考:https://blog.csdn.net/m0_46381569/article/details/131121799

1.2 IDEA

编写Java代码时建议大家使用IDE(集成开发环境)来提供开发效率。

下载,建议【2020.1.1版本】

下载地址:https://www.jetbrains.com/idea/download/other.html 官网地址下载

激活地址:https://3.jetbra.in/ 操作步骤如下

激活步骤:
在这里插入图片描述
在这里插入图片描述

2 基本语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
2.1 Java简介

python解释型语言

a = '爬虫开发'
print(a)

Java编译型语言

public class Hello {
    public static void main(String[] args) {
        System.out.println("hell worlwd");
        String name = "爬虫开发";
		System.out.println(name);
    }
}

方法名说明

img

下面将逐步介绍如何保存、编译以及运行这个程序:

执行代码,需要先编译

javac -encoding UTF-8 Hello.java  

编译完成后 会得到 Hello.class, 运行代码

java Hello

执行流程
在这里插入图片描述

目录文件介绍

在这里插入图片描述

  • .idea目录:记录了IntelliJ IDEA 的配置目录,包含项目的配置信息、工程设置、构建配置等。它是用来存储项目的一些特定设置,比如运行和调试配置、代码检查规则等
  • out目录:是编译输出目录,包含编译后的类文件、资源文件以及其他生成的文件。在这个目录下,你可以找到编译后的输出文件,如Java类的字节码文件(.class),以及其他资源文件
  • SRC目录:这是源代码目录,包含你实际编写的 Java 源代码文件。你应该将项目的源代码文件(Java 文件)放在这个目录下的合适子目录中,按照包结构组织。
  • .iml 文件IntelliJ IDEA 的 Module文件。它记录了项目的模块配置信息,包括模块的名称、依赖关系、源代码目录等。

3 参数说明

3. 1 语法简介

编写 Java 程序时,应注意以下几点:

  • 大小写敏感Java 是大小写敏感的,这就意味着标识符 Hello hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
3.2 Java修饰符

访问修饰符和非访问修饰符是用来控制类、成员变量和成员方法的访问权限的关键字。

访问修饰符包括以下四个关键字:public、protected、private和默认(即无修饰符),非访问修饰符包括final、abstract、static和synchronized等。

下面是它们的使用场景:

  1. 访问修饰符的使用场景:
    • public:可以被任何类访问,适用于公共接口、公共方法和公共成员变量。
    • protected:可以被同一包内的类和不同包的子类访问,适用于需要继承或包内访问的场景。
    • private:只能被当前类访问,适用于封装私有信息的场景。
    • 默认(无修饰符):只能被同一包内的类访问,适用于包内部使用的场景。
  2. 非访问修饰符的使用场景:
    • final:表示最终的、不可修改的,适用于常量、方法、类等。
    • abstract:表示抽象的,适用于抽象类和抽象方法。
    • static:表示静态的,适用于与类相关而不是对象的属性和方法。
    • synchronized:表示同步的,适用于多线程环境下对方法或代码块进行同步操作。

修饰符可以用于类、接口、成员变量和方法等程序元素,并且可以组合使用。通过使用不同的修饰符,我们可以控制访问级别、实现继承关系、限制修改等,以便更好地设计和组织Java程序。

3.3 Java 变量

Java 中主要有如下几种类型的变量

  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)
3.4 Java 关键字

下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。

类别关键字说明
访问控制private私有的
protected受保护的
public公共的
default默认
类、方法和变量修饰符abstract声明抽象
class
extends扩充,继承
final最终值,不可改变的
implements实现(接口)
interface接口
native本地,原生方法(非 Java 实现)
new新,创建
static静态
strictfp严格,精准
synchronized线程,同步
transient短暂
volatile易失
程序控制语句break跳出循环
case定义一个值以供 switch 选择
continue继续
default默认
do运行
else否则
for循环
if如果
instanceof实例
return返回
switch根据值选择执行
while循环
错误处理assert断言表达式是否为真
catch捕捉异常
finally有没有异常都执行
throw抛出一个异常对象
throws声明一个异常可能被抛出
try捕获异常
包相关import引入
package
基本类型boolean布尔型
byte字节型
char字符型
double双精度浮点
float单精度浮点
int整型
long长整型
short短整型
变量引用super父类,超类
this本类
void无返回值
保留关键字goto是关键字,但不能使用
const是关键字,但不能使用

4 java基础语法

初步代码的分析:Hello.java

public class Hello {
    public static void main(String[] args) {
        System.out.println("你好");
    }
}

主函数 & 程序的入口。

def func():
    pass

if __name__ == "__main__":
	func()

文件名

一个文件中最多只能有一个public类 且 文件名必须和public类名一致。
如果文件中有多个类,文件名与public类名一致。
如果文件中有多个类 且 无public类,文件名可以是任意类名。

类名

首字母大写且驼峰式命名,例如:Hello、UserInfo、PersonApplication
  • 类修饰符:publicdefault(不写)

  • 类中成员修饰符:publicprivateprotecteddefault(不写)

  • 静态成员,无需实例化就可以指定调用。

    class MyTest{
    
        public void f1(){
            System.out.println("f1");
        }
    
        public static void f2(){
            System.out.println("f2");
        }
    }
    
    public class Hello {
    
        public static void main(String[] args) {
            //1.实例化
            MyTest obj = new MyTest();
            // 2.对象调用
            obj.f1();
            
            MyTest.f2();
        }
    }
    
4.1 注释

注释语法有点像JavaScript手法

/**
 * 对这个类进行注释
 */
public class Hello {

    public static void main(String[] args) {
        // 单行注释
        // int age = 18;

        /* 多行注释
        String name = "夏洛";
        int size = 18;
         */
    }
}
4.2 变量和常量

在Java中,字符指的是单个Unicode编码字符,它对应的数据类型是char(注意不是String类型)。一个char类型的变量可以存储一个Unicode字符,占用两个字节(16位)。在Java中,可以使用单引号 ’ ’ 来表示字符。

public class Hello {

    public static void main(String[] args) {
        String name = "夏洛";
        name = "xialuo";
	    char c1 = 'a';
        double d1 = 3.14;
        float f1 = 3.14f; // f 后缀可以明确指定为 float 类型
        long l1 = 100000L;
        short s1 = 100;
        final int size = 18;  // 常量  不能被修改
    }
}
  1. long类型:长整型,占用8个字节(64位),可以表示更大范围的整数。

    范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

  2. short类型:短整型,占用2个字节(16位),表示较小范围的整数。

    范围:-32,768 到 32,767

4.3 输入和输出
import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        
        // 输出
        System.out.print("请输入:");
        
        // 输入
        Scanner input = new Scanner(System.in);
        String text = input.nextLine();

        // 输出
        System.out.println(text);
        // System.out.print(text);
    }
}
4.4 算术运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

表格中的实例假设整数变量A的值为10,变量B的值为20:

public class Test {
 
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     int c = 25;
     int d = 25;
     System.out.println("a + b = " + (a + b) );
     System.out.println("a - b = " + (a - b) );
     System.out.println("a * b = " + (a * b) );
     System.out.println("b / a = " + (b / a) );
     System.out.println("b % a = " + (b % a) );
     System.out.println("c % a = " + (c % a) );
     System.out.println("a++   = " +  (a++) );
     System.out.println("a--   = " +  (a--) );
     // 查看  d++ 与 ++d 的不同
     System.out.println("d++   = " +  (d++) );
     System.out.println("++d   = " +  (++d) );
  }
}
4.5 关系运算符

实例

下面的简单示例程序演示了关系运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:

public class Test {
 
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     System.out.println("a == b = " + (a == b) );
     System.out.println("a != b = " + (a != b) );
     System.out.println("a > b = " + (a > b) );
     System.out.println("a < b = " + (a < b) );
     System.out.println("b >= a = " + (b >= a) );
     System.out.println("b <= a = " + (b <= a) );
  }
}

以上实例编译运行结果如下:

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
4.6 逻辑运算符

实例

下面的简单示例程序演示了逻辑运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:

public class Test {
  public static void main(String[] args) {
     boolean a = true;
     boolean b = false;
     System.out.println("a && b = " + (a&&b));
     System.out.println("a || b = " + (a||b) );
     System.out.println("!(a && b) = " + !(a && b));
  }
}

以上实例编译运行结果如下:

a && b = false
a || b = true
!(a && b) = true
4.7条件运算符

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

variable x = (expression) ? value if true : value if false

实例

public class Test {
   public static void main(String[] args){
      int a , b;
      a = 10;
      // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "Value of b is : " +  b );
 
      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "Value of b is : " + b );
   }
}

以上实例编译运行结果如下:

Value of b is : 30
Value of b is : 20
4.8 条件语句

在Java中,if-else语句是一种常用的条件语句,用于根据给定的条件决定执行哪些代码块。

if-else语句的基本语法如下:

if (条件) {
    // 如果条件为真,执行这个代码块
} else {
    // 如果条件为假,执行这个代码块
}

如果 条件 为真(即满足条件),则执行 if 语句块中的代码。如果 条件 为假(即不满足条件),则执行 else 语句块中的代码。

以下是一个简单的示例:

int num = 10;

if (num > 0) {
    System.out.println("这个数是正数");
} else {
    System.out.println("这个数不是正数");
}

在上面的例子中,如果变量 num 的值大于零,则打印出 “这个数是正数”;否则,打印出 “这个数不是正数”。

除了单个的 else 语句外,还可以使用多个 else if 来处理更多的条件情况。例如:

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

在上面的例子中,根据不同的分数范围,打印出相应的评级。

需要注意的是,if-else语句可以嵌套,即在 ifelse 代码块中再使用另一个 if-else 结构。但要保持代码的可读性,尽量避免嵌套过深的情况。

4.9 循环语句
4.9.1 while循环

while 循环在给定条件为真的情况下重复执行代码块。它只有循环条件部分,没有循环前和循环后的操作。

while (循环条件) {
    // 执行的代码块
    // 循环条件为真时会继续执行
}

案例一

public class Hello {

    public static void main(String[] args) {
        
        int count = 0;
        while (count < 3) {
            System.out.println("执行中...");
            count += 1;
        }
    }
}
4.9.2 do while循环

do-while 循环首先执行代码块,然后检查循环条件。只有当循环条件为真时,才会继续重复执行代码块。(至少执行1次)

do {
    // 执行的代码块
    // 循环条件为真时会继续执行
} while (循环条件);

案例一

public class Hello {
    public static void main(String[] args) {
        
        int count = 0;
        do {
            System.out.println("执行中...");
            count += 1;
        } while (count < 3);
        
    }
}
4.9.3 for循环

for 循环提供了一种简洁的方式来遍历序列或重复执行一个代码块固定次数。它由初始化表达式、循环条件和循环后操作组成。

for (初始化表达式; 循环条件; 循环后操作) {
    // 执行的代码块
}

案例一

public class Hello {

    public static void main(String[] args) {
        
		// i++ 先赋值在运算
        //++i 先运算在赋值
        for (int i = 0; i < 10; i++) {
            System.out.println("哈哈哈");
        }
        
    }
}

案例二

public class Hello {

    public static void main(String[] args) {

        String[] nameList = {"苏苏", "菲菲", "莹莹", "丽丽"};
        // nameList.length   4
        // nameList[0]

        for (int idx = 0; idx < nameList.length; idx++) {
            String ele = nameList[idx];
            System.out.println(ele);
        }
    }
}

注意:也支持break/continue。

4.9.4 break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块

String[] nameList = {"莉莉", "菲菲", "莹莹", "丽丽"};
for (int idx = 0; idx < nameList.length; idx++) {
    String ele = nameList[idx];
    if (ele == "莹莹"){
        break;
    }
    System.out.println(ele);
}

以上实例编译运行结果如下:

莉莉
菲菲
4.9.5 continue 关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

String[] nameList = {"莉莉", "菲菲", "莹莹", "丽丽"};
for (int idx = 0; idx < nameList.length; idx++) {
    String ele = nameList[idx];
    if (ele == "莹莹"){
        break;
    }
    System.out.println(ele);
}

以上实例编译运行结果如下:

莉莉
菲菲
丽丽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习笔记(六)——面向对象编程(基础)

一、类与对象 &#xff08;一&#xff09;类与对象的概念 &#xff08;二&#xff09;对象内存布局 ​编辑 对象分配机制 ​编辑 &#xff08;三&#xff09;属性/成员变量 &#xff08;四&#xff09;创建对象与访问属性 二、成员方法 &#xff08;一&#xff09;方法…

全球互联网信息,中文内容只占1.3%,学好英语,这几条路子让你赚认知外的钱

在全世界的整个互联网上&#xff0c;中文内容只占1.3%&#xff0c;而英文内容接近60%&#xff0c;如果你不会英语&#xff0c;你的眼界和思维将局限在这1.3%里面。 单单就说赚钱这个事情&#xff0c;学好英语&#xff0c;你可以有很多特殊的路子赚到大钱&#xff0c;可以赚到你…

Vue纯CSS实现掷色子

效果图&#xff1a; 实现代码 直接利用CSS3动画实现的效果&#xff0c;无js代码。 <template><div class"wrap"><input type"checkbox" id"roll"><label for"roll"><div class"content"><…

安防监控项目---mjpeg-streamer视频图像显示(实时视频流实现)

文章目录 前言一、硬件准备和硬件设备的查询二、 jpeg库的移植2.1 源码下载2.2 jpeg库的移植三、mjpeg-stream的移植四、测试结果总结 前言 书接上期&#xff0c;我们已经实现了许多功能了&#xff0c;但是对于视频流的实时上传还未实现&#xff0c;本期主要分享的就是如何具体…

浅述青犀AI算法人体攀爬行为检测的应用场景及解决方案

人体攀爬行为检测是指利用计算机视觉技术对人类攀爬物体的行为进行识别和分析。该技术主要依靠图像和视频数据进行分析&#xff0c;通过识别人类身体的各个部位&#xff0c;以及其在攀爬过程中的动作和姿态&#xff0c;实现对攀爬行为的检测和跟踪。该技术的场景应用比较广泛&a…

Mac -- zsh-最新全网超详细的个性化终端(Terminal)颜色及vim颜色配置(亲测可行)

转自 Mac -- zsh-最新全网超详细的个性化终端(Terminal)颜色及vim颜色配置(亲测可行)_mac zsh-CSDN博客 以下都是苹果 设置&#xff0c;这是简化版的&#xff0c;详细的看我引用的 个性化终端颜色背景设置 显示检查器 打开终端&#xff0c;鼠标在终端中&#xff0c;右击&…

妙手ERP本期功能更新:TikTok支持自定义SKU规格、Temu支持创建尺码表、仓库库存可同步至Shopee全球产品 ......

为了给卖家朋友带来更好的使用体验&#xff0c;更高效地运营跨境店铺&#xff0c;妙手ERP在上周优化了以下多项功能。 01、产品模块优化 全平台 - 插件采集支持批量采集速卖通产品 - 店铺互踩、店铺产品增加销量筛选项 - 公用采集箱支持编辑产品父SKU、AI生成、SKU规格、尺码…

基于单片机设计的自动门控制系统

一、项目介绍 随着科技的不断发展&#xff0c;自动门成为公共场所、商业建筑和住宅社区等地的常见设施。自动门的出现使得进出门的操作更加便捷&#xff0c;提高了人们的生活质量和工作效率。为了实现自动门的开关控制&#xff0c;本项目基于单片机设计了一套自动门控制系统。…

Mac PS2023/2024储存窗口黑屏不显示 解决方法

mac 版本ps2023&#xff0c;存储为窗口突然显示为空白了&#xff0c;没有任何文字按钮&#xff0c;尝试过重启软件、重启电脑、重新安装、电脑系统更新&#xff0c;皆没有效果。 仅ps2023有这个bug&#xff0c;其他操作正常。 具体步骤: 1.打开finder, 先点击左边文稿, 再点击…

二维码智慧门牌管理系统:让房屋管理变得轻松高效!

文章目录 前言一、六实数据管理应用&#xff0c;让管理更精准二、快速导入导出&#xff0c;提升工作效率三、科技助力&#xff0c;让生活更美好四、适用广泛&#xff0c;满足各类需求 前言 随着科技的飞速发展&#xff0c;传统的房屋管理方式已经无法满足现代社会的需求。为了…

【Python语言】字符串的使用方法总结

目录 1、字符串的基本知识 2、字符串的常用操作 2.1 查找特定字符串的下标索引值 2.2 字符串的替换 2.3 字符串的分割 2.4 字符串的规整操作 2.5 统计字符串中某个字符串出现的次数 2.6 统计字符串的长度 3、字符串的遍历 3.1 while循环 3.2 for循环 1、字符串的基本…

cocosCreator微信小游戏 之 获取用户昵称、头像等信息(二)

版本&#xff1a; 3.4.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac 简介 在上篇博客中&#xff0c;主要讲述内容&#xff1a;wx API在cocosCreator中配置定义文件和微信后台配置用户隐私相关。 讲述的主要原因是&#xff1a; cocosCreator没有对 wx API提供定义接…

链表的中间结点

题目表述 给你单链表的头结点 head&#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 这道题的思路是快慢指针&#xff0c;具体来说就是定义两个指针&#xff0c;一快一慢&#xff0c;快指针一次走两步&#xff0c;慢指针一次…

【每日一题】填充每个节点的下一个右侧节点指针 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;BFS 其他语言python3 写在最后 Tag 【BFS】【树】【2023-11-03】 题目来源 117. 填充每个节点的下一个右侧节点指针 II 题目解读 为二叉树中的每一个节点填充下一个节点。 解题思路 方法一&#xff1a;BFS 本题题目…

C 语言左移位操作在kernel驱动子系统中的特殊用途

文章目录 前言一、C语言左移位操作介绍1. 左移位二、左移位操作在kernel 驱动子系统中的应用1. 左移位操作在 V4L2, Media 子系统中的应用实例2.左移位操作在 DRM 子系统中的应用实例2.1 左移位操作在struct drm_crtc 中的应用2.2 左移位操作在struct drm_encoder 中的应用总结…

thinkphp6 入门(11)-- 模板标签

新版框架默认只能支持PHP原生模板&#xff0c;如果需要使用thinkTemplate模板引擎&#xff0c;需要安装think-view扩展&#xff08;该扩展会自动安装think-template依赖库&#xff09;。 composer require topthink/think-view配置文件 安装完成后&#xff0c;在配置目录的vi…

[AUTOSAR][诊断管理][ECU][$3E] 测试设备在线|会话保持

文章目录 一、简介二、服务请求报文定义三、肯定响应四、支持的NRC四、示例步骤(1)supportPosRspMsgIndicationBit=0(2)supportPosRspMsgIndicationBit=1三、示例代码3e_test_present.c一、简介 这个服务的目的是确保诊断服务或者之前激活的通信还处在激活的状态,可以保持…

批量压缩图片大小的绝妙技巧,让你的图片更轻盈

在制作幻灯片演示时&#xff0c;经常需要插入图片作为视觉辅助&#xff0c;通过批量缩小图片大小&#xff0c;可以减小演示文件的大小&#xff0c;方便共享和传输。 那么怎么将图片缩小成了问题的关键&#xff0c;市面上不少方法都是需要通过下载软件来处理图片的&#xff0c;…

自动驾驶高效预训练--降低落地成本的新思路(ReSimAD)

自动驾驶高效预训练--降低落地成本的新思路 1. 引言定义高效预训练 2. ReSimAD2.1引言2.2 主要贡献1.发布大规模ReSimAD数据2.ReSimAD pipeline 2.3 实验 上海人工智能实验室 1. 引言 高效的预训练&#xff0c;是大模型的第一步 大模型的两种能力 海量数据分布–未知场景泛化…