java之基础2笔记

1 类型转换

1.1 自动类型转换(隐式类型转换)

  1. 从小的数据类型到大的数据类型的转换(如 int 到 long)。

  2. 从低精度的数据类型到高精度的数据类型的转换(如 float 到 double)。

1.2 强制类型转换(显式类型转换)

  1. 从大的数据类型到小的数据类型的转换(如 long 到 int)。

  2. 从高精度的数据类型到低精度的数据类型的转换(如 double 到 float)。

1.3 案例

案例1

public class ImplicitTypeConversion {public static void main(String[] args) {int intValue = 10;long longValue = intValue; // 自动类型转换:int 到 long
​float floatValue = 10.5f;double doubleValue = floatValue; // 自动类型转换:float 到 double
​System.out.println("intValue: " + intValue);System.out.println("longValue: " + longValue);System.out.println("floatValue: " + floatValue);System.out.println("doubleValue: " + doubleValue);}
}

输出结果

案例2

public class ExplicitTypeConversion {public static void main(String[] args) {long longValue = 10000000000L;int intValue = (int) longValue; // 强制类型转换:long 到 int
​double doubleValue = 10.5;float floatValue = (float) doubleValue; // 强制类型转换:double 到 float
​System.out.println("longValue: " + longValue);System.out.println("intValue: " + intValue);System.out.println("doubleValue: " + doubleValue);System.out.println("floatValue: " + floatValue);}
}

输出结果

2 运算符

2.1 算术运算符

2.1.1 算数运算符格式

操作符描述例子
+加法 - 相加运算符两侧的值A + B 等于 30
-减法 - 左操作数减去右操作数A – B 等于 -10
*乘法 - 相乘操作符两侧的值A * B等于200
/除法 - 左操作数除以右操作数B / A等于2
取余 - 左操作数除以右操作数的余数B%A等于0
++自增: 操作数的值增加1B++ 或 ++B 等于 21(区别详见下文)
--自减: 操作数的值减少1B-- 或 --B 等于 19(区别详见下文)

2.1.2 案例

public class ArithmeticOperators {public static void main(String[] args) {int a = 10;int b = 5;
​int sum = a + b; // 加法运算符int difference = a - b; // 减法运算符int product = a * b; // 乘法运算符int quotient = a / b; // 除法运算符int remainder = a % b; // 取模运算符
​System.out.println("a + b = " + sum);System.out.println("a - b = " + difference);System.out.println("a * b = " + product);System.out.println("a / b = " + quotient);System.out.println("a % b = " + remainder);}
}

输出结果

2.2 关系运算符

2.2.1 关系运算符格式

运算符描述例子
==检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假。
!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A != B) 为真。
>检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A> B)为假。
<检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A <B)为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A> = B)为假。
<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A <= B)为真。

2.2.2 案例

public class RelationalOperators {public static void main(String[] args) {int a = 10;int b = 5;
​boolean equal = a == b; // 等于运算符boolean notEqual = a != b; // 不等于运算符boolean greater = a > b; // 大于运算符boolean less = a < b; // 小于运算符boolean greaterOrEqual = a >= b; // 大于等于运算符boolean lessOrEqual = a <= b; // 小于等于运算符
​System.out.println("a == b: " + equal);System.out.println("a != b: " + notEqual);System.out.println("a > b: " + greater);System.out.println("a < b: " + less);System.out.println("a >= b: " + greaterOrEqual);System.out.println("a <= b: " + lessOrEqual);}
}

输出结果

2.3 自增自减运算符

2.3.1 自增自减运算符格式

符号作用
++用作变量前后,对自身值加一
--用作变量前后,对自身值减一

2.3.2 案例

public class selfAddMinus{public static void main(String[] args){int a = 3;//定义一个变量;int b = ++a;//自增运算int c = 3;int d = --c;//自减运算System.out.println("进行自增运算后的值等于"+b);System.out.println("进行自减运算后的值等于"+d);}
}

输出结果

2.4 逻辑运算符

2.4.1 逻辑运算符格式

操作符描述例子
&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(A && B)为假。
| |称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A && B)为真

2.4.2案例

public class LogicalOperators {public static void main(String[] args) {boolean a = true;boolean b = false;
​boolean and = a && b; // 与运算符boolean or = a || b; // 或运算符boolean not = !a; // 非运算符
​System.out.println("a && b: " + and);System.out.println("a || b: " + or);System.out.println("!a: " + not);}
}

输出结果

2.5 位运算符

2.5.1 位运算符格式

操作符描述例子
如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即0000 1100
|如果相对应位都是 0,则结果为 0,否则为 1(A | B)得到61,即 0011 1101
^如果相对应位值相同,则结果为0,否则为1(A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即1100 0011
<<按位左移运算符。左操作数按位左移右操作数指定的位数。A << 2得到240,即 1111 0000
>>按位右移运算符。左操作数按位右移右操作数指定的位数。A >> 2得到15即 1111
>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即0000 1111

2.5.2 案例

public class BitwiseOperators {public static void main(String[] args) {int a = 5; // 二进制表示:101int b = 3; // 二进制表示:011
​int bitwiseAnd = a & b; // 按位与运算符int bitwiseOr = a | b; // 按位或运算符int bitwiseXor = a ^ b; // 按位异或运算符int bitwiseNot = ~a; // 按位取反运算符
​System.out.println("a & b: " + bitwiseAnd);System.out.println("a | b: " + bitwiseOr);System.out.println("a ^ b: " + bitwiseXor);System.out.println("~a: " + bitwiseNot);}
}

输出结果

2.6 赋值运算符

2.6.1 赋值运算符格式

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C
+ =加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A
- =减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A
* =乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A
/ =除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A
(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%= A等价于C = C%A
<< =左移位赋值运算符C << = 2等价于C = C << 2
>> =右移位赋值运算符C >> = 2等价于C = C >> 2
&=按位与赋值运算符C&= 2等价于C = C&2
^ =按位异或赋值操作符C ^ = 2等价于C = C ^ 2
| =按位或赋值操作符C | = 2等价于C = C | 2

2.6.2 案例

public class AssignmentOperators {public static void main(String[] args) {int a = 10;int b = 5;
​a += b; // 等价于 a = a + ba -= b; // 等价于 a = a - ba *= b; // 等价于 a = a * ba /= b; // 等价于 a = a / ba %= b; // 等价于 a = a % b
​System.out.println("a += b: " + a);System.out.println("a -= b: " + a);System.out.println("a *= b: " + a);System.out.println("a /= b: " + a);System.out.println("a %= b: " + a);}
}

输出结果

2.7 三元运算符

2.7.1 三元运算符格式

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

2.7.2 案例代码

public class TernaryOperator {public static void main(String[] args) {int a = 10;int b = 5;int max = (a > b) ? a : b; // 如果 a > b,则 max = a,否则 max = bSystem.out.println("Max value: " + max);}
}

输出结果

3 流程控制

3.1 分支结构

  • if-else:根据条件表达式的值选择执行不同的代码块。

  • switch-case:根据变量的值选择执行不同的代码块。

3.2 循环结构

  • for循环:通过初始化、条件判断和更新循环变量来控制循环次数。

  • while循环:当条件满足时循环执行某段代码。

  • do-while循环:先执行代码块,再判断条件是否满足,若满足则继续循环。

3.3 挑战关键字

  1. break:用于跳出循环或switch语句。

  2. continue:用于跳过当前循环的剩余部分,进入下一次循环。

3.4 多重循环

多重循环指的是在一个循环体内部再嵌套另一个或多个循环。常见的有多重for循环、while循环嵌套等。

3.5 案例

例1 使用if-else进行数字比较

public class IfElseExample {  public static void main(String[] args) {  int a = 5;  int b = 10;  if (a > b) {  System.out.println("a 大于 b");  } else if (a < b) {  System.out.println("a 小于 b");  } else {  System.out.println("a 等于 b");  }  }  
}

输出结果

例2 使用switch进行字符串匹配

public class SwitchStringExample {  public static void main(String[] args) {  String day = "MONDAY";  switch (day) {  case "MONDAY":  System.out.println("Today is Monday");  break;  case "TUESDAY":  System.out.println("Today is Tuesday");  break;  // 其他情况...  default:  System.out.println("Invalid day");  }  }  
}

输出结果

例3 使用for循环和break打印1到10之间的奇数

public class ForBreakExample {  public static void main(String[] args) {  for (int i = 1; i <= 10; i++) {  if (i % 2 == 0) {  continue; // 跳过偶数  }  System.out.println(i);  if (i == 5) {  break; // 当i等于5时跳出循环  }  }  }  
}

输出结果

例4 使用嵌套for循环打印九九乘法表

public class NestedForExample {  public static void main(String[] args) {  for (int i = 1; i <= 9; i++) {  for (int j = 1; j <= i; j++) {  System.out.print(j + "x" + i + "=" + (i * j) + "\t");  }  System.out.println(); // 换行  }  }  
}

输出结果

例5 使用while循环和continue打印1到10之间非3的倍数

public class WhileContinueExample {  public static void main(String[] args) {  int i = 1;  while (i <= 10) {  if (i % 3 == 0) {  i++; // 跳过3的倍数  continue;  }  System.out.println(i);  i++;  }  }  
}

输出结果

例6 使用do-while循环打印1到10

public class DoWhileExample {  public static void main(String[] args) {  int i = 1;  do {  System.out.println(i);  i++;  } while (i <= 10);  }  
}

输出结果

4 数组

4.1 一维数组的使用

4.1.1一维数组的基本概念

一维数组是最简单的数组,用于存储相同类型的数据,且这些数据在内存中连续存放。

4.1.2 一维数组的声明和初始化

1.声明

int[] array; // 声明一个整型数组

2.初始化

  • 静态初始化:在声明数组的同时指定数组的元素。

int[] array = {1, 2, 3, 4, 5};
  • 动态初始化:只指定数组的长度,由系统自动为数组元素分配默认值(对于数值类型,默认值为0;对于引用类型,默认值为null)。

int[] array = new int[5]; // 数组元素默认为0

4.1.3 访问数组元素

通过索引(下标)来访问数组元素,索引从0开始。

int value = array[2]; // 访问数组中索引为2的元素,即第3个元素

4.1.4 数组的长度

通过length属性来获取数组的长度。

int length = array.length; // 获取数组的长度

4.1.5 案例

public class OneDArrayExample {  public static void main(String[] args) {  // 静态初始化数组  int[] numbers = {10, 20, 30, 40, 50};  // 访问和修改数组元素  System.out.println("第一个元素:" + numbers[0]);  numbers[1] = 25;  System.out.println("修改后的第二个元素:" + numbers[1]);  // 遍历数组  for (int i = 0; i < numbers.length; i++) {  System.out.println("数组元素:" + numbers[i]);  }  }  
}

输出结果

4.2 多维数组的使用

4.2.1 多维数组的基本概念

多维数组是数组的数组,最常见的多维数组是二维数组。二维数组常用于表示表格或矩阵。

4.2.2 二维数组的声明和初始化

1.声明

int[][] matrix; // 声明一个整型二维数组

2.初始化

  • 静态初始化

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
  • 动态初始化

int[][] matrix = new int[3][]; // 第一维长度为3,第二维长度动态指定  
matrix[0] = new int[3];  
matrix[1] = new int[2];  
matrix[2] = new int[4];

4.2.3 访问二维数组元素

通过两个索引(下标)来访问二维数组元素。

int value = matrix[1][2]; // 访问第二行第三列的元素

4.2.4 案例代码

public class TwoDArrayExample {  public static void main(String[] args) {  // 静态初始化二维数组  int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};  // 访问二维数组元素  System.out.println("第二行第三列的元素:" + matrix[1][2]);  // 遍历二维数组  for (int i = 0; i < matrix.length; i++) {  for (int j = 0; j < matrix[i].length; j++) {  System.out.print(matrix[i][j] + " ");  }  System.out.println(); // 换行  }  }  
}

输出结果

5 方法

5.1 方法的定义

在Java中,方法(也称为函数)是用来执行特定任务的代码块。方法的定义包括方法名、返回类型(如果方法返回值)、参数列表以及方法体。

示例:

public class Example {  // 一个无参数、无返回值的方法(void表示不返回任何值)  public void sayHello() {  System.out.println("Hello, World!");  }  // 一个带参数、有返回值的方法  public int addNumbers(int a, int b) {  return a + b;  }  
}

5.2 方法的使用

使用(或调用)方法时,你需要指定方法名,并传递任何必要的参数(如果方法有参数的话)。调用方法的结果(如果有的话)可以被赋值给一个变量,或者直接使用(如果返回类型是void)。

示例:

public class ExampleDemo {  public static void main(String[] args) {  Example example = new Example();  // 调用无参数的方法  example.sayHello();  // 调用带参数的方法,并将结果赋值给变量  int sum = example.addNumbers(5, 3);  System.out.println("The sum is: " + sum);  }  
}

5.3 方法的返回值

方法的返回类型决定了方法执行完毕后返回给调用者的值的类型。如果方法没有返回值,其返回类型应该是void

示例(见上面addNumbers方法)。

5.4 方法的调用

方法的调用是通过方法名进行的,并可能包含传递给方法的参数列表(用括号包围)。调用方法后,控制权会传递给该方法,执行其中的代码块,然后返回(如果有返回值的话)。

示例(见上面main方法中的方法调用)。

5.5 递归

递归是一种编程技术,其中方法会直接或间接地调用自己。递归通常用于解决可以分解为更小、类似子问题的问题,如阶乘、斐波那契数列等。

示例:计算阶乘的递归方法:

public class Factorial {  public static int factorial(int n) {  if (n == 0 || n == 1) {  return 1;  } else {  return n * factorial(n - 1);  }  }  public static void main(String[] args) {  System.out.println("Factorial of 5 is: " + factorial(5));  }  
}

6 局部变量和成员变量

6.1 局部变量

  • 定义位置:在方法、构造器或者初始化块中定义。

  • 作用范围:定义它的块内,包括该块中的嵌套块。

  • 生命周期:当进入定义它的块时,被创建;当退出该块时,被销毁。

  • 初始化:局部变量在使用前必须显式初始化,否则编译会报错。

6.2 成员变量

  • 定义位置:在类中,但在任何方法、构造器或初始化块之外。

  • 作用范围:整个类体。

  • 生命周期:与对象的存在时间一致,当对象被创建时,成员变量被分配内存空间并初始化;当对象被销毁时,成员变量所占用的内存空间被释放。

  • 初始化:如果没有显式初始化,则会有默认值(如数值类型默认为0,引用类型默认为null)。

6.3 案例

public class VariableExample {  // 成员变量(静态成员变量)  static int staticVar = 10;  // 成员变量(实例成员变量)  int instanceVar = 20;  public static void main(String[] args) {  // 静态方法中的局部变量  int localVarInStaticMethod = 30;  System.out.println("Local variable in static method: " + localVarInStaticMethod);  // 创建对象  VariableExample example = new VariableExample();  // 访问静态成员变量  System.out.println("Static member variable: " + staticVar);  // 访问实例成员变量(通过对象)  System.out.println("Instance member variable: " + example.instanceVar);  // 对象方法中的局部变量  example.printLocalVariable();  }  // 实例方法  public void printLocalVariable() {  // 局部变量  int localVarInInstanceMethod = 40;  System.out.println("Local variable in instance method: " + localVarInInstanceMethod);  // 访问实例成员变量(直接访问,因为当前对象上下文中)  System.out.println("Instance member variable (inside instance method): " + this.instanceVar);  // 访问静态成员变量(也可以,但通常不推荐在实例方法中直接访问静态成员)  System.out.println("Static member variable (inside instance method): " + staticVar);  }  
}

输出

Local variable in static method: 30  
Static member variable: 10  
Instance member variable: 20  
Local variable in instance method: 40  
Instance member variable (inside instance method): 20  
Static member variable (inside instance method): 10

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

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

相关文章

儿童护眼灯哪个好?带你了解适合儿童的护眼灯款式分享

儿童护眼灯哪个好&#xff1f;作为我们日常生活中极为实用的小家电&#xff0c;为了确保使用台灯时的舒适性并且保护视力&#xff0c;选择一款专业的护眼台灯成为了一个明智的决定。这样的台灯能够提供更舒适、均匀的照明环境&#xff0c;那么到底儿童护眼灯哪个好你&#xff1…

实现手机空号过滤或手机号码有效性验证

手机空号过滤或手机号码有效性验证通常涉及使用专门的API接口来查询手机号码的状态。这些API接口通常由第三方服务提供商提供&#xff0c;它们会与电信运营商合作或利用自己的数据库来验证手机号码是否真实存在、是否已被分配、是否处于空号状态等。 以下是一些步骤和考虑因素…

爬虫——有道云翻译

废话不多说直接上代码 固定文本内容 import timefrom selenium import webdriver from selenium.common.exceptions import NoSuchElementException, TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWai…

Day 41 NGINX详解

Nginx详解 一、HTTP协议 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 1、HTTP 工作原理 HTTP协议通信流程 WEB Server&…

超维小课堂 | 6、MAVROS与机载电脑Jetson nano通信

MAVROS与机载电脑Jetson nano通信 ROS系统镜像——Jetson nano b01 4G 链接: 百度云镜像链接 链接&#xff1a;https://pan.baidu.com/s/1NoIEvVdsiYLPvVOWM98hjQ 提取码&#xff1a;cwkj 简介&#xff1a;MAVROS和Jetson nano通信&#xff0c;设置飞控参数和MAVROS文件&am…

程序猿大战Python——了解Python

了解Python 编程语言的发展 目标&#xff1a;了解编程语言。 我们知道&#xff0c;咱们的日常沟通交流使用的语言&#xff1a;普通话。 那什么是编程语言呢&#xff1f; 【官方解释】编程语言是用来定义程序的语言形式&#xff0c;也就是说&#xff0c;我们可以通过编程语言…

root账号,cmd命令行能用ssh连上服务器,但是vscode连接报错Permission denied,please try again

☆ 问题描述 但是cmd能连接上 ★ 解决方案 点击 然后add到自己的配置文件下 重新选择 这个时候就会出现刚刚添加的&#xff0c;点击选择 输入密码 然后就ok了 ✅ 总结 只能说&#xff1a;玄学&#xff01;

剪画小程序:自媒体必备神器:【视频翻译】自动识别语言、翻译、配音,让外语视频秒变母语!

Hello&#xff0c;大家好呀&#xff01;我是不会画画的小画~ 今天给大家带来一款敲实用的视频翻译工具一一 小程序【剪画】 我们有很小伙伴在学习他国语言时&#xff0c;最大的障碍就是语言的问题了&#xff0c;想要 理解其中的内容&#xff0c;在这之前要下很大的功夫去掌握…

创业新风口:智能售货机的崛起

随着科技的飞速发展&#xff0c;智能售货机已经不再是简单的自动贩卖机&#xff0c;它们变得更加智能、灵活&#xff0c;能够适应各种场景需求&#xff0c;从传统的饮料、零食到新鲜水果、便当、甚至是电子产品&#xff0c;无所不包。这种24小时无人值守的商业模式&#xff0c;…

居民社区团购小程序源码系统 拼团管理+团长管理功能 带完整的安装代拿代码包以及搭建教程

系统概述 居民社区团购小程序源码系统是一款专为社区团购打造的一站式解决方案。它整合了拼团管理和团长管理等核心功能&#xff0c;能够帮助企业和创业者快速搭建自己的社区团购平台&#xff0c;实现高效运营和便捷管理。 代码示例 系统特色功能 1.拼团管理&#xff1a;支持…

工业互联网基本概念及关键技术(295页PPT)

资料介绍&#xff1a; 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通&#xff0c;从而提高效率&#xff0c;推动整个制造服务体系智能化。同时&#xff0c;工…

Java环境配置(超详细)

Java环境配置&#xff08;超详细&#xff09; 引言1、安装 JDK1.1、下载安装JDK1.2、配置环境变量&#xff1a;JAVA_HOME1.3、将JAVA_HOME添加到Path中 2、安装 Maven2.1、下载安装Maven2.2、配置maven的环境变量: M2_HOME2.3、将Maven变量添加到Path中 引言 Java开发环境的配…

PyTorch 相关知识介绍

一、PyTorch和TensorFlow 1、PyTorch PyTorch是由Facebook开发的开源深度学习框架&#xff0c;它在动态图和易用性方面表现出色。它以Python为基础&#xff0c;并提供了丰富的工具和接口&#xff0c;使得构建和训练神经网络变得简单快捷。 发展历史和背景 PyTorch 是由 Fac…

创建采购订单免费行项目,注意事项

1.我在使用bapi&#xff08;BAPI_PO_CREATE1&#xff09;创建采购订单免费行项目的时候&#xff0c;还是报错了请输入净价格。 解决方式&#xff1a;把这些数据都赋值好&#xff0c;那么你的采购订单行项目就是免费项目。 BAPIMEPOITEM-IR_IND 空 &#xff08;发票收据标识&am…

文件传输新体验,这些中转站工具让你的职场生活更轻松

不知道大家有没有体验过华为手机的中转站功能&#xff0c;可以一键抓取图片或文件&#xff0c;暂时放在中转站中然后可以再拖到指定文件夹中。 华为手机的中转站功能&#xff0c;以其独特的跨应用文件传输能力&#xff0c;为用户带来了极大的便利。无论是图片、视频还是文档&am…

git: 批量删除分支

环境&#xff1a; window11git version 2.42.0git-bash.exe window环境下&#xff1a; 1. 批量删除本地 git branch |grep xxx |xargs git branch -D比如&#xff1a; 想批量删除本地含有 release 关键字的分支&#xff1a; 2. 批量删除远程 git branch -r | grep xxxx | …

腾讯云Edgeone为我的网站保驾护航

文章目录 前言边缘安全加速平台介绍模拟网站被攻击攻击脚本攻击脚本执行 网站快速接入 EdgeOne前提条件&#xff08;注意事项&#xff09;添加站点添加加速域名 EdgeOne 防护效果EdgeOne 体验感受总结 前言 众所周知&#xff0c;网站如果没有安全防护&#xff0c;极易遭受恶意…

github异常问题总结

问题1&#xff1a; gitgitlab.gz.cvte.cn: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.解决方法&#xff1a; 这个错误表示 GitLab 服务器拒绝了你的 SSH…

「动态规划」如何求下降路径最小和?

931. 下降路径最小和https://leetcode.cn/problems/minimum-falling-path-sum/description/ 给你一个n x n的方形整数数组matrix&#xff0c;请你找出并返回通过matrix的下降路径的最小和。下降路径可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一…

【Altium】AD-原理图中使用多通道问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决在原理图主图中&#xff0c;对子图使用多通道命令后&#xff0c;子图未形成多个通道的问题。 2、 问题场景 客户手中的工程文件&#xff0c;主图中对子图使用了多通道命令&#xff0c;子图图纸并未形成多通道…