[Java] 方法和数组

目录

1. 方法

1.2 什么是方法

1.2 方法的定义

1.3 方法的调用

1.4 方法的重载

1.5 递归

2. 一维数组

2.1 什么是数组

2.2 数组的创建

2.3 数组的初始化

2.4 遍历数组

2.5 引用数据类型

2.6 关于null 

2.7 数组转字符串

2.8 数组元素的查找

2.9 数组的排序

2.10 数组的拷贝

2.11 数组逆序

2.12 Arrays类部分方法

3. 二维数组

3.1 二维数组的定义和初始化

3.2 数组的遍历

 3.3 不规则二维数组


1. 方法

1.2 什么是方法

        Java中的方法就类似于C语言当中的函数,是实现一种特定的,使用频率高的功能,专门解决一种问题的办法。例如:求一个数的开平方,判断一个数是不是素数。

方法也分为两种,一种是Java语言规定的方法,还有一种是程序员根据自己的需要自定义的一些方法。

当在解决重复问题时,设置一个方法解决重复问题,可以多次调用方法去解决重复问题,不用每次使用就需要写代码,减少代码冗余度。

1.2 方法的定义

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

                方法体代码;

                (return 返回值;)

}

上面是方法的基本形式,举个例子,写一个判断一个数是不是素数的方法:

public static boolean isPrimeNumber(int n){for (int i = 2; i < Math.sqrt(n); i++) {if(n % i == 0){return false;}}return true;}
}

public static 是修饰符,boolean 是返回值类型,返回值类型必须与return返回的类型一致,isPrimeNumber是方法名,int n是参数,下面便是方法体,如果没有返回值,则返回值类型写void,不用写return。

方法不能嵌套定义,方法的命名一般是小驼峰,方法必须在类里面。

1.3 方法的调用

定义好一个方法后,需要在main函数里面进行调用,否则不会调用。

public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();boolean b = isPrimeNumber(a);if (b == true) {System.out.println(a + "是素数");}}

在调用方法时候如果方法需要传参,便需要在调用的时候传入对应类型的参数,然后调用方法。          形参是实参的一份临时拷贝,改变形参的值不会改变实参的值,因为形参和实参不是同一块地址,每次调用方法都需要在栈中调用一块空间,方法调用完销毁。

1.4 方法的重载

方法在调用时候可能需要传的参数的类型,顺序,数量不同,但都是同一种功能的方法,这时候就可以把两种方法用相同的名字命名,例如:

public static int add(int a,int b){return a + b;}public static double add(double a,double b){return a + b;}

上面代码是计算两个数的和的方法,但是传的参数不一样,可以用相同的名字来命名方法,这样调用这个方法时候既可以计算两个整型的和,也能计算两个双精度浮点数的和。

注意:

方法名必须相同

方法参数的类型,顺序,数量其中至少有一种不同

与方法的返回值类型无关。

按理来说同一块作用域不能有两个相同的标识符,但是为什么类里面可以有相同名字的两种方法呢?

其实不然,我们编写的方法名并不是真正存储在内存中的方法名,而编译器会将方法+后面的参数编译成一种方法签名供机器识别。

我们可以通过JDK自带的反汇编工具查看方法在机器中存储的真正名字。

1.先将.java文件编译成.class文件

2. 找到.class文件所在的目录,用控制台打开

3. 输入javap -v 字节码文件名就可以显示反汇编码了。

上面第一个方法名是add;(II)I,括号里面表示方法的参数是两个整型,后面表示返回值是整型,第二个方法名add(DD)D,括号里面表示方法的参数是两个double类型的,后面表示返回值是double类型。机器识别的是这种方法签名,区分方法的重载。

下面方法签名的一些符号:

1.5 递归

 递归就是递推和回归的意思,在解决一些问题时,使用递归将复杂的问题简单化,就可以轻松求解。递归也就是方法重复调用自己,知道遇到停止条件,才停止调用,返回调用的值。

因此递归有两个重要的部分:

1. 递推公式

2. 终止条件

例如求n!;

public static void main(String[] args) {//求n的阶乘Scanner sc = new Scanner(System.in);int n = sc.nextInt();System.out.println(fib(n));}public static int fib(int a){if(a == 1){return 1;}return a * fib(a-1);}

上面代码中 a == 1是终止条件,a * fib(a-1)是递推公式。

但是递归也有它的坏处,那就是容易导致栈溢出,因为每次调用方法都需要在栈里面申请空间,如果问题过于复杂,申请的空间过多,就会导致栈溢出,例如用递归解决斐波那契数列问题,给的数太大,就会导致栈溢出。

2. 一维数组

2.1 什么是数组

        数组可以理解为相同元素的集合,数组里面可以存储许多相同类型的数据,数组在内存中是连续存储的。

2.2 数组的创建

数组创建的基本形式,下面我以创建整型数组为例:

int[]  a = new int[10];

int[]是数据类型,代表引用类型,a是变量名,称为引用变量也被称为引用,new是创建一个新的对象,后面中括号里是数组的大小。

2.3 数组的初始化

数组的初始化分为两种动态初始化静态初始化

动态初始化

在创建数组的时候直接指定数组的大小,不指定数组内容,系统默认赋值为0:

int[] a = new int[10];

静态初始化

在创建数组的时候不指定数组元素的个数,而是指定数组里面的值:

int[] a = new int[]{1,2,3,4,5};

静态变量虽然没有指定数组的大小,但是编译器会根据后面数据的内容来判断数组的大小。

静态变量初始化时候可以简写成:

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

在Java中也支持C语言的定义数组的方法:

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

当然不建议平时这样定义数组和初始化。

在静态初始化和动态初始化时也可以分开来写:

//静态初始化
int[] a;
a = new int[]{1,2,3,4,5};
//动态初始化
int[] b;
b = new int[10];

当然不能写成如下格式:

//错误
int[] a;
a = {1,2,3,4,5};

数组没有初始化的话,系统默认的值是:

 数组中存储的是引用类型时的默认值是:null。

2.4 遍历数组

遍历数组有三种方法:

方法一:

下面方法中使用循环的方法来遍历数组并打印,里面用到.length的属性,.length是求数组长度的属性。

int[] a = new int[]{1,2,3,4,5};
for(int i = 0;i < a.length;i++) {System.out.print(a[i] + " ");
}

方法二:

下面是for循环的的另一种版本,能够更简便的遍历数组,把数组里的每个值传给定义的 x变量,并打印。

int[] a = new int[]{1,2,3,4,5};
for (int x,a) {System.out.print(x + " ");
}

方法二的优点是遍历数组简单,缺点是获取不了数组元素的下标,不能改变数组里面的值。

方法三:

这里用到了Arrays里面的toString方法,将数组传进去返回数字里面的值的字符串形式:

import java.util.Arraysint[] a = new int[]{1,2,3,4,5};
String b = Arrays.toString(a);
System.out.println(b);

输出结果是:[1,2,3,4,5]

2.5 引用数据类型

数组属于引用数据类型,引用数据类型就是存储到是数据在堆区创建的地址,存储都引用变量里面。下面先介绍一下JVM(java虚拟机):

程序都要在JVM中运行,在JVM中的栈区申请一块栈帧,存放方法的局部变量等,在堆区创建对象,用引用变量存放对象的地址,来使用对象。

下面是JVM里面的代码运行时的数据区:

为什么会有两个栈区?

本地方法栈执行的是由C/C++编写的方法。

虚拟机栈是执行的Java的方法的。

我们今天只用到堆区和虚拟机栈。

这里定义一个整型数组:

int[] a = new int[]{1,2,3,4,5};

 int[] 是引用类型,a是引用变量,又称引用,new是创建新对象,后面是创建的新对象,它们在内存中存储如下:
 

 引用变量a先在栈区申请一块空间,a是引用变量存放的是对象的地址,new创建的对象存放在堆区,a存放的地址,指向堆区里面创建的数组对象。

1. 一个引用变量只能指向一个对象。

2. 引用变量初始化赋值为null时,引用变量不指向任何对象。

3. 假设两个引用变量a 和 b,a=b的含义是:a指向的对象变成b指向的对象

4. 引用类型的引用变量存放的是对象的地址。

在Java中数组可以作为返回值,也可以作为方法的参数:
例如:

public static int[] arr(int[] a) {int[] b = new int[a.length];for(int i = 0;i < a.length;i++) {b[i] = a[i];return b;
}

2.6 关于null 

null 在Java中被称为空引用,也就是不指向任何一个对象:

int[] a = null;

该引用不能进行读写操作,或者.length操作等,如果使用就会报错:

 

 null相当于C语言中的NULL指针,表示的是一个无效的内存。

2.7 数组转字符串

在Java中有一个名为Arrays的类,里面有很多对数组处理的方法,Arrsys类里面的toString(数组名)的方法,能帮助我们快速的将数组转换成字符串:

public static void main(String[] args) {//数组转字符串int[] a = new int[]{1, 2, 3, 4, 5};String b = Arrays.toString(a);System.out.println(b);}

当然我们也可以自己书写一个将数组转换为字符串的方法:

public static void main(String[] args) {int[] a = new int[]{1,3,5,7,9};String b = myToString(a);System.out.println(b);
}public static String myToString(int[] a) {String arr = "[";for (int i = 0; i < a.length; i++) {arr += a[i];if(i != a.length-1) {arr += ", ";}}arr += "]";return arr;
}

2.8 数组元素的查找

方法一:顺序查找

一次遍历数组中的每个元素,知道遇到要查找的元素,返回元素下标。

public static void main(String[] args) {//查找数组中的元素,返回下标int[] a = new int[]{1,2,3,4,5};int b = 3;System.out.println(find(a,b));}public static int find(int[] a,int b) {for (int i = 0; i < a.length; i++) {if(b == a[i]) {return i;}}return -1;}

方法二:二分查找

二分查找的前提是数组元素是有序的,一次检查一半的元素,直到查找到元素,返回下标。

public static int fingOne(int[] a,int b) {int left = 0;int right = a.length - 1;while(left <= right) {int mid = (left + right) / 2;if(b > a[mid]) {left = mid + 1;}else if(b < a[mid]) {right = mid - 1;}else {return mid;}}return -1;}

方法三:系统自带的二分查找方法

        int[] a = new int[]{1,2,3,4,5};int c = Arrays.binarySearch(a,3);System.out.println(c);

用到Arrays类里面的binarySearch(数组名,查找元素)方法 ,返回查找的数组下标,如果数组中没有查找元素,则返回 -(最后一次二分查找左下标 + 1)。

该方法的重载还可以实现指定数组返回进行二分查找元素:

        int[] a = new int[]{1,2,3,4,5};int d = Arrays.binarySearch(a,1,3,3);System.out.println(d);

Arrays.binarySearch(数组名,范围开始下标,范围结束下标,查找元素);

从数组下标范围 [1,3)里面查找3元素,返回下标。

2.9 数组的排序

方法一:冒泡排序

升序:对数组中的元素从开始依次相邻两个进行比较;大的数后移,直到比较到最后两个数结束,数组中最大的数就在最后一个位置。循环往复,最后完成数组的升序排列:

public static void main(String[] args) {//冒泡排序(升序)int[] a = new int[]{1,22,5,33,66,55,9};mysort(a);System.out.println(Arrays.toString(a));}public static void mysort(int[] a) {boolean b = true;//轮数for (int i = 0; i < a.length-1; i++) {for (int j = 0; j < a.length-1-i; j++) {if(a[j] > a[j+1]) {int tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;b = false;}}if(b == true) {return;}}return;}

方法二:Java自带的方法

Arrays类里面的.sort(数组名)方法,默认将数组内容升序排列:

        int[] a = new int[]{1,22,5,33,66,55,9};Arrays.sort(a);System.out.println(Arrays.toString(a));

2.10 数组的拷贝

方法一:

自己创建方法实现

public static void main(String[] args) {//数组的拷贝int[] a = new int[]{1,2,3,4,5};int[] b = myCopyArray(a);System.out.println(Arrays.toString(b));}public static int[] myCopyArray(int[] a) {int[] b = new int[a.length];for (int i = 0; i < a.length; i++) {b[i] = a[i];}return b;}

方法二:

Java中自带的方法

Arrays类中的copyOf(拷贝的数组名,新数组的长度);

        int[] a = new int[]{1,2,3,4,5};int[] c = Arrays.copyOf(a,a.length);System.out.println(Arrays.toString(c));

 Arrays类里面还有一种方法可以指定数组范围拷贝:copyOfRange(拷贝的数组名,拷贝开始的下标,拷贝结束的下标);

        int[] a = new int[]{1,2,3,4,5};int[] d = Arrays.copyOfRange(a,2,4);System.out.println(Arrays.toString(d));

注意:拷贝方法的底层方法代码由C/C++代码书写,被关键字native修饰的方法是由C/C++代码书写的,运行效率高,查看不了源代码。 

2.11 数组逆序

将数组中的元素逆序输出:

public static void main(String[] args) {//数组逆序int[] a = new int[]{1,2,3,4,5};move(a);System.out.println(Arrays.toString(a));}public static void move(int[] a) {int left = 0;int right = a.length - 1;while(left < right) {int tmp = a[left];a[left] = a[right];a[right] = tmp;left++;right--;}}

2.12 Arrays类部分方法

查找数组指定元素(二分查找)

Arrays.binarySearch(数组名,查找元素);返回查找元素下标,若不存在查找元素,返回最后一次二分查找的左下标 + 1 取负数。

        //查找数组指定元素int[] a = new int[]{1,2,3,4,5};int b = Arrays.binarySearch(a,4);int c = Arrays.binarySearch(a,2,4,3);System.out.println(b);System.out.println(c);

数组的拷贝

Arrays.copyOf(拷贝的数组名,新数组的大小);返回拷贝的新数组。

        int[] a = new int[]{1,2,3,4,5};int[] c = Arrays.copyOf(a,a.length);System.out.println(Arrays.toString(c));

Arrays.copyOfRange(拷贝的数组名,拷贝开始下标,拷贝结束下标);拷贝数组指定范围的数据到新数组。

        int[] a = new int[]{1,2,3,4,5};int[] d = Arrays.copyOfRange(a,2,4);System.out.println(Arrays.toString(d));

判断两个数组是否相等

Arrays.equals(数组1,数组2);比较数组1和数组2里面的内容是否相等。相等返回true,不相等返回false。

        //比较两个数组是否相等int[] arr1 = new int[]{1,2,3,4,5};int[] arr2 = new int[]{1,2,3,4,5};boolean d = Arrays.equals(arr1,arr2);System.out.println(d);

数组的赋值

Arrays.fill(数组名,值);将值赋值给数组的所有元素。

        //数组赋值int[] arr3 = new int[]{1,2,3,4,5};Arrays.fill(arr3,6);System.out.println(Arrays.toString(arr3));

fill方法的重载:Arrays.fill(数组名,赋值开始坐标,赋值结束坐标,值);指定数组范围赋值。

        //数组赋值int[] arr3 = new int[]{1,2,3,4,5};Arrays.fill(arr3,2,4,6);System.out.println(Arrays.toString(arr3));

数组的排序(升序)

Arrays.sort(数组名);对数组内的元素进行升序排列。

        int[] a = new int[]{1,22,5,33,66,55,9};Arrays.sort(a);System.out.println(Arrays.toString(a));

数组转换成字符串

Arrays.toString(数组名);将数组转换成字符串[1,2,3,4,5]。

        //数组转换成字符串int[] arr4 = new int[]{1,2,3,4,5};System.out.println(Arrays.toString(arr4));

 二维数组转换成字符串

Arrays.deepToString(数组名) ;将二维数组转换成[ [1,2,3],[4,5,6] ]。

        //二维数组转换成字符串int[][] a = new int[][]{{1,2,3},{4,5,6}};System.out.println(Arrays.deepToString(a));

3. 二维数组

3.1 二维数组的定义和初始化

下面是定义并初始化数组的写法:

        int[][] a = new int[2][3];int[][] b = new int[][]{{1,2,3},{4,5,6}};int[][] c = {{1,2,3},{4,5,6}};int[][] d;d = new int[2][3];int[][] f;f = new int[][]{{1,2,3},{4,5,6}};

3.2 数组的遍历

二维数组是特殊的一维数组,假设二维数组int[][] arr = new int[][]{{1,2,3},{4,5,6,}},arr指向的对象是一维数组,里面存放两个一维数组对象的地址,而两个地址位置分别是两个一维数组。

关系如下图:

方法一:循环遍历

    public static void main(String[] args) {int[][] a = new int[][]{{1,2,3},{4,5,6}};for (int i = 0; i < a.length; i++) {for (int j = 0; j < a[i].length; j++) {System.out.print(a[i][j] + " ");}System.out.println();}}

方法二:for-each遍历

    public static void main(String[] args) {int[][] a = new int[][]{{1,2,3},{4,5,6}};for(int[] b : a) {for(int c : b) {System.out.print(c + " ");}System.out.println();}}

方法三:Java自带的方法

Arrays.deepToString(数组名);作用是将二维数组转换成字符串

System.out.println(Arrays.deepToString(a));

打印结果:

 3.3 不规则二维数组

Java中定义数组时不可以省略行的值,可以省略列的值:

    public static void main(String[] args) {int[][] a = new int[2][];a[0] = new int[3];a[1] = new int[4];for (int i = 0; i < a.length; i++) {for (int j = 0; j < a[i].length; j++) {System.out.print(a[i][j] + " ");}System.out.println();}}

上面数组a就是不规则数组,第一行有三列,第二行有四列。

打印出来是:

在堆中存储如下:

 

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

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

相关文章

全局异常处理:如何优雅地统一管理业务异常

在软件开发中&#xff0c;异常处理是保证系统健壮性的重要环节。一个良好的异常处理机制不仅能提高代码的可维护性&#xff0c;还能为使用者提供清晰的错误反馈。本文将介绍如何通过全局异常处理和业务异常统一处理来编写更加优雅的代码。 一、传统异常处理的痛点 1.1 典型问…

PHP 编程:现代 Web 开发的基石与演进

引言 PHP&#xff08;Hypertext Preprocessor&#xff09;自1995年诞生以来&#xff0c;已成为全球最流行的服务器端脚本语言之一。尽管近年来Node.js、Python等语言在特定领域崭露头角&#xff0c;但PHP仍占据着超过78%的网站市场份额&#xff08;W3Techs数据&#xff09;。本…

MCU程序加密保护(一)闪存读写保护法 加密与解密

MCU&#xff08;微控制器单元&#xff09;的加密方法可以从硬件、软件和通信协议三个层面来理解。以下是常见的MCU加密手段&#xff0c;按类型分类说明&#xff1a; 针对目前 STM32 系列微控制器在程序加密保护方面手段单一、保护效果有限的问题&#xff0c;本文介绍并分析了四…

汽车装配又又又升级,ethernetip转profinet进阶跃迁指南

1. 场景描述&#xff1a;汽车装配线中&#xff0c;使用EtherNet/IP协议的机器人与使用PROFINET协议的PLC进行数据交互。 2. 连接设备&#xff1a;EtherNet/IP机器人控制器&#xff08;如ABB、FANUC&#xff09;与PROFINET PLC&#xff08;如西门子S7-1500&#xff09;。 3. 连…

RFID系统:技术解析与应用全景

一、技术架构与运行逻辑 RFID&#xff08;Radio Frequency Identification&#xff09;系统通过无线电波实现非接触式数据交互&#xff0c;其核心由三部分组成&#xff1a; 电子标签&#xff08;Tag&#xff09;&#xff1a; 无源标签&#xff1a;依赖读写器电磁场供电&…

25、DeepSeek-R1论文笔记

DeepSeek-R1论文笔记 1、研究背景与核心目标2、核心模型与技术路线3、蒸馏技术与小模型优化4、训练过程简介5、COT思维链&#xff08;Chain of Thought&#xff09;6、强化学习算法&#xff08;GRPO&#xff09;7、冷启动**1. 冷启动的目的****2. 冷启动的实现步骤****3. 冷启动…

开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析

👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定义模型中的各…

Raft 协议:分布式一致性算法的核心思想

引言 在分布式系统中&#xff0c;数据一致性是核心挑战。Raft 协议作为一种易于理解的一致性算法&#xff0c;被广泛应用于 etcd、Consul 等系统中。 一、Raft 核心概念 1.1 角色与任期&#xff08;Term&#xff09; • 领导者&#xff08;Leader&#xff09;&#xff1a;处…

基于DWT的音频水印算法

基于离散小波变换&#xff08;DWT&#xff09;的音频水印算法是一种结合信号处理与信息隐藏的技术&#xff0c;旨在将版权信息或标识隐蔽地嵌入音频信号中&#xff0c;同时保证不可感知性和鲁棒性。以下是该算法的核心步骤及关键技术点&#xff1a; ​1. 算法基本原理​ ​DWT…

低空经济发展现状与前景

低空经济发展现状与前景 一、低空经济的定义与范畴 低空经济是以民用有人驾驶和无人驾驶航空器为主体&#xff0c;以载人、载货及其他作业等多场景低空飞行活动为牵引&#xff0c;辐射带动商业活动或公共服务领域融合发展的一种综合性新经济形态。其涵盖的低空空域通常为距离…

售前工作.工作流程和工具

第一部分 售前解决方案及技术建议书的制作 售前解决方案编写的标准操作步骤SOP: 售前解决方案写作方法_哔哩哔哩_bilibili 第二部分 投标过程关键活动--商务标技术方案 1. 按项目管理--售前销售项目立项 销售活动和销售线索的跟踪流程和工具 1&#xff09;拿到标书&#xff…

DeerFlow试用

github拉取代码 配置.env和conf.yaml 注意设置大模型的url和模型名称、api_key 先启动根目录下的server&#xff0c;端口如果有冲突直接在default变量赋值时修改&#xff1b; 再启动前端&#xff0c;先build再run dev&#xff1b; 根据前端完成时的地址访问界面&#xff1…

python + streamlink 下载 vimeo 短视频

1. 起因&#xff0c; 目的: 看到一个视频&#xff0c;很喜欢&#xff0c;想下载。https://player.vimeo.com/video/937787642 2. 先看效果 能下载。 3. 过程: 因为我自己没头绪。先看一下别人的例子&#xff0c; 问一下 ai 或是 google问了几个来回&#xff0c;原来是流式…

JavaScript【6】事件

1.概述&#xff1a; 在 JavaScript 中&#xff0c;事件&#xff08;Event&#xff09;是浏览器或 DOM&#xff08;文档对象模型&#xff09;与 JavaScript 代码之间交互的一种机制。它代表了在浏览器环境中发生的特定行为或者动作&#xff0c;比如用户点击鼠标、敲击键盘、页面…

【Java ee初阶】HTTP(2)

一、HTTP的方法 方法 说明 支持的HTTP协议版本 GET 获取资源 1.0、1.1 POST 传输实体主体 1.0、1.1 PUT 传输文件 1.0、1.1 HEAD 获得报文首部 1.0、1.1 DELETE 删除文件 1.0、1.1 OPTIONS 询问支持的方法 1.1 TRACE 追踪路径 1.1 CONNECT 要求用隧道…

文件名是 ‪E:\20250512_191204.mp4, EV软件录屏,未保存直接关机损坏, 如何修复?

去github上下载untrunc 工具就能修复 https://github.com/anthwlock/untrunc/releases 如果访问不了 本机的 hosts文件设置 140.82.112.3 github.com 199.232.69.194 github.global.ssl.fastly.net 就能访问了 实在不行&#xff0c;从这里下载&#xff0c;传上去了 https://do…

腾讯 CodeBuddy 杀入 AI 编程赛道,能否撼动海外工具霸主地位?

在 AI 编程助手领域&#xff0c;海外的 Cursor 等工具风头正劲&#xff0c;如今腾讯带着 CodeBuddy 隆重登场&#xff0c;国产 AI 编程助手能否借其之力崛起&#xff1f;让我们一探究竟。 官网&#xff1a; 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 实战安装教程 …

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色常量QColorConstants)

文章目录 一、概述二、颜色常量表标准 Qt 颜色SVG 颜色&#xff08;部分&#xff09; 三、Python 代码示例四、代码说明五、版本兼容性六、延伸阅读 一、概述 QColorConstants 是 Qt for Python 提供的一个预定义颜色常量集合&#xff0c;包含标准Qt颜色和SVG规范颜色。这些常…

MATLAB 自然语言处理入门教程

文章目录 前言环境配置一、MATLAB NLP 工具箱概述二、核心功能与 API1. 文本数据准备2. 特征提取3. 文本分类&#xff08;传统机器学习&#xff09;4. 深度学习文本分类&#xff08;LSTM&#xff09; 三、实战案例&#xff1a;情感分析四、高级应用1. 命名实体识别&#xff08;…

C++ deque双端队列、deque对象创建、deque赋值操作

在deque中&#xff0c;front()是头部元素&#xff0c;back()指的是尾部元素。begin()是指向头部的迭代器&#xff0c;end()是指向尾部的下一个元素的迭代器。 push_front 头部进行插入 pop_front 尾部进行删除 push_back 尾部进行插入 pop_back 尾部进行删除 deque如果同时…