小黑子—Java从入门到入土过程:第四章
Java零基础入门4.0
- Java系列第四章
- 1. 顺序结构
- 2. if语句
- 3. switch 语句
- 3.1 default的位置和省略
- 3.2 case 穿透
- 3.3 switch 新特性 (jdk12开始)
- 4. for 循环
- 5. while 循环
- 6.do...while 循环
- 7. 无限循环
- 8. 跳转控制语句
- 9. 练习
- 9.1 逢七过
- 9.2 平方根
- 9.3 求质数
- 10. 随机数
- 11. 数组
- 11.1 数组的地址
- 11.2 数组索引
- 11.3 数组的遍历
- 11.4 数组的动态初始化
- 12. 数组练习
- 12.1 求最值
- 12.2 遍历数组求和
- 12.3 交换数据
- 12.4 打乱数据
- 13. 数组的内存图
Java系列第四章
1. 顺序结构
2. if语句
3. switch 语句
3.1 default的位置和省略
- 1.位置 : defaule不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面
- 2.省略: defaule可以省略,语法不会有问题,但是不建议省略。
3.2 case 穿透
就是语句体中没有写break导致的。
执行流程:
- 首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。
- 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
- 如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
- 如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码。
3.3 switch 新特性 (jdk12开始)
支持箭头表达式返回
import org.junit.Test;enum Gender {MALE, FEMALE, UNKNOWN;
}public class TestX {private Gender gender = Gender.MALE;@Testpublic void show() {switch (gender) {case MALE:System.out.println("男");break;case FEMALE:System.out.println("女");break;default:throw new IllegalStateException(gender.toString());break;}}
}
Java 新特性 的 switch 表达式使用箭头表达时,不需要在每一个 case 后都加上 break。
@Testpublic void show() {switch (gender) {case MALE -> System.out.println("男");case FEMALE -> System.out.println("女");default -> throw new IllegalStateException(gender.toString());}
4. for 循环
package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.键盘录入两个数字Scanner sc = new Scanner(System.in);System.out.print("请录入一个数字表示范围的开始:");int start = sc.nextInt();System.out.println("请录入一个数字表示范围的结束:");int end = sc.nextInt();// 统计变量//简单逻辑,统计符合要求的数字个数int count = 0;//2.利时循环获取这个范围中的每一个数字for (int i = start; i <= end; i++) {//3.对每一个数字进行判断,统计有多少个满足要求的数字if (i % 3 == 0 && i % 5 == 0) {count++;}}System.out.println(count);}
}
5. while 循环
for 和 while 的对比
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义数字int x = 123321;//定义一个临时变量用于记录×原来的值,用于最后进行比较int temp = x;//记录倒过来之后的结果int num = 0;//2.利用循环开始while (x != 0) {//从右往左获取每一位数字int ge = x % 10;//修改下x记录的值x= x/10;//把当前获取到的数字拼接到最右边num = num * 10 + ge;}System.out.println(num);System.out.println(x);System.out.println(num == temp);}
}
6.do…while 循环
7. 无限循环
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// for 格式的无限循环for(;;){System.out.println("wdnmd");}}
}
可以按红色的方块暂停
8. 跳转控制语句
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 0; i < 5; i++) {if(i==3){continue;}System.out.println("wdnmd"+i+"fk");}}
}
2.
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 0; i < 5; i++) {if(i==3){break;}System.out.println("wdnmd"+i+"fk");}}
}
9. 练习
9.1 逢七过
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 1; i <=100; i++) {if(i%10==7||i/10%10==7||i%7==0){System.out.println("过");continue;}System.out.println(i);}}
}
9.2 平方根
package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int number = sc.nextInt();for (int i = 1; i < number; i++) {if (i * i == number) {System.out.println(i + "就是" + number + "的平方根");break;} else if (i * i > number) {System.out.println((i - 1) + "就是" + number + "平方根的整数部分");break;}}}
}
9.3 求质数
- 标记法
package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int number = sc.nextInt();//定义一个变量,表示标记// 标记着number是否为一个质数// true:是一个质数//false :不是一个质数boolean flag = true;for (int i = 2; i < number; i++) {// i 表示依次表示这个范围之内的每一个数字//看number是否能被i整除就可以了if(number%i ==0){flag = false;break;}}//只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了// 此时才能断定number是一个质数if(flag){System.out.println(number+"是一个质数");}else{System.out.println(number+"不是一个质数");}}
}
- 平方根法
10. 随机数
package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//先获取一个随机数。// 范围:2~10//2.创建对象Random r = new Random();//3.生成随机数//判断技巧://在小括号中,书写的是生成随机数的范围//这个范围一定是从e开始的。//到这个数-1结束//口诀:包头不包尾,包左不包右for(int i = 0;i<100;i++){int number = r.nextInt(10)+5;//0+5~9+5 //5~14System.out.println(number);}}
}
练习:
package com.itheima.demo1;import java.util.Random;
import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数宇是多少?// 扩展小需求:加一个保底机制,3次猜不中,直接提示猜中了。//注意点://1.生成随机数的代码int number = r.nextInt(100) +1;// 不能写在循环的里面的,否则每一次都会产生一个新的随机数//2.抽奖机制//用点券去抽水晶// 保底360次//计数器//用来统计当前已经猜了多少次。int count = 0;//分析// 1.生成一个1-100之间的随机数字Random r = new Random();int number = r.nextInt(100) + 1;System.out.println(number);// 2. 猜这个数字是多少Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入你要猜的数字:");int gussNumber = sc.nextInt();//3 .判断两个数字给出不同的提示// 猜的数字大了,提示大了//猜的数字小了,提示小了//猜的数字一样,提示猜中了count++;if(count == 3){System.out.println("猜中了");break;}if(gussNumber>number){System.out.println("大了");}else if(gussNumber<number){System.out.println("小了");}else{System.out.println("猜中了");break;}}}
}
11. 数组
11.1 数组的地址
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {double[] arr6={1.93,1.75,1.73,181};System.out.println(arr6);// [D@4554617c 地址值// 扩展://解释一下地址值的格式含义[D@4554617c//[﹔表示当前是一个数组//D:表示当前数组里面的元素都是double类型的//@:表示一个间隔符号。(固定格式)// 4554617c:才是数组真正的地址值,(十六进制)// 平时我们习惯性的会把这个整体叫做数组的地址值。}
}
11.2 数组索引
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//利用索引对数组中的元素进行访问1/1.获取数组里面的元素//格式://数组名[索引]int[]arr = {1,2,3,4,5};//获取数组中的第一个元素//其实就是e索引上对应的元素l / int number = arr[e];// system.out.println( number);//1//获取数组中1索引上对应的数据,并直接打印出来/ / system.out.println(arr[1]);//2//2.把数据存储到数组当中//格式:数组名[索引]=具体数据/变量;//细节:一旦覆盖之后,原来的数据就不存在了。arr[0] = 100;System.out.println(arr[0]);//100}
}
11.3 数组的遍历
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//利用循环改进代码//开始条件: 0//结束条件:数组的长度-1(最大索引)//在Java当中,关于数组的一个长度属性,length// 调用方式:数组名.length//扩展://自动的快速生成数组的遍历方式/ lidea提供的//数组名.foriint[] arr = {1,2,3,4,5};for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}
}
练习:
1.
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义一个数组存储1,2,3,4,5,6,7,8,9,10int [] arr={1,2,3,4,5,6,7,8,9,10};int count =0;for (int i = 0; i < arr.length; i++) {//i表示数组里面的每一个索引// arr[i]表示数组里面的每一个元素//3.判断当前的元素是否为3的倍数,如果是那么统计变量就需要自增一次。if(arr[i]%3==0){count++;}}System.out.println("数组中能被3整除的数字有"+count+"个");}
}
2.
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义一个数组存储1,2,3,4,5,6,7,8,9,10int [] arr={1,2,3,4,5,6,7,8,9,10};for (int i = 0; i < arr.length; i++) {//i表示数组里面的每一个索引// arr[i]表示数组里面的每一个元素//3.判断当前的元素是否为3的倍数,如果是那么统计变量就需要自增一次。if(arr[i]%2==0){// 偶数变二分之一arr[i]=arr[i]/2;}else{arr[i]=arr[i]*2;}}// 遍历数组// 一个循环尽量只做一件事情for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}
11.4 数组的动态初始化
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//格式://数据类型[门]数组名= new数据类型[数组的长度];//在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值String[] arr = new String[50];//添加学生arr[0] = "zhangsan";arr[1] = "lisi";System.out.println(arr[0]);//zhangsanSystem.out.println(arr[1]);//lisiSystem.out.println(arr[2]);//打印出来的是默认初始化值null//数组默认初始化值的规律//整数类型:默认初始化值0// 小数类型:默认初始化值0.0//字符类型:默认初始化值"/u0000" ->空格//布尔类型:默认初始化值 false//引用数据类型:默认初始化值nullint[] arr2=new int[3];System.out.println(arr2[0]);//0System.out.println(arr2[1]);//0System.out.println(arr2[2]);//0}
}
数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。
12. 数组练习
12.1 求最值
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//扩展问题://1.根据求最大值的思路,自己改写一下求最小智//2.为什么max要记录为arr[0],默认值不能为0吗?// 不能写0// max的初始化值一定要是数组中的值。// 3.循环中开始条件一定是0吗?//循环的开始条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率偏低// 为了提高效率,减少一次循环的次数,循环开始条件可以写1.//1. 定义数组用来储存5个值int []arr={33,5,22,44,55};//2. 定义一个变量用来储存最大值//临时认为0索引的数据是最大的int max=arr[0];//3. 循环获取素组的每一个元素//拿每一个元素跟max进行比较for (int i = 0; i < arr.length; i++) {//i 索引 arr[i]元素if(arr[i]>max){max=arr[i];}}// 4. 当循环结束之后,max记录的就是数组中的最大值System.out.println(max);}
}
12.2 遍历数组求和
package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// 分析://1.定义数组//动态初始化int[] arr = new int[10];//2.把随机数存入到数组当中Random r = new Random();for (int i = 0; i < arr.length; i++) {// 每循环一次,就会生成一个新的随机数int number = r.nextInt(100) + 1;// 相当于new Random().nextInt(100) 通过netInt方法的值输到随机数中//从0~99随机,要到100就在后面+1// 把生成的随机数添加到数组当中// 数组名[索引]=数据;arr[i] = number;}//1.求出所有数据的和int sum=0;for (int i = 0; i < arr.length; i++) {sum=sum+arr[i];}System.out.println("所有数据的和:"+sum);//2.求出所有数据的平均数int avg = sum/arr.length;System.out.println("所有数据的平均数:"+avg);//3.统计有多少个数据比平均值小int count=0;for (int i = 0; i < arr.length; i++) {if(arr[i]<avg){count++;}}// 当循环结束之后,就表示我已经找到了所有的比平均值小的数据System.out.println("在数据中,一共有:"+count+"个数据比平均数小");// 遍历数组,验证答案for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]+" ");}}
}
12.3 交换数据
- 定义交换
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {int a=10;int b=20;//把变量b的值,赋值给了变量a,那么变量a原来的值被覆盖了int temp =a;// 把变量b的值,赋值给了a,那么变量a原来记录的值就被覆盖了a=b;// 就是把变量a原来的值,赋值给了变量bb=temp;System.out.println(a);//20System.out.println(b);//10}
}
- 遍历数组法
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// 1.定义一个数组int[] arr ={1,2,3,4,5};//2.将数组中0索引和最大索引引出的值进行交换
`在这里插入代码片` int temp = arr[0];arr[0] = arr[4];arr[4]=temp;//3.遍历数组for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//1.定义数组存储数据int[] arr={1,2,3,4,5};//2.利用循环去交换数据for(int i=0,j=arr.length-1;i<j;i++,j--){//交换变量i和变量j指向的元素int temp = arr[i];arr[i]=arr[j];arr[j]=temp;}// 当循环结束之后,那么数组中的数据就实现了头尾交换for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
12.4 打乱数据
package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//难点://如何获取数组中的随机索引//1. 定义数组存储1~5int[] arr={1,2,3,4,5};// 2. 循环遍历数组,从0索引开始打乱数据的顺序Random r =new Random();for(int i=0;i<arr.length;i++){// 生成一个随机索引int randomIndex = r.nextInt(arr.length);//拿着随机索引指向的元素 跟 i 指向的元素进行交换int temp =arr[i];arr[i]=arr[randomIndex];arr[randomIndex]=temp;}// 当循环结束之后,那么数组中所有的数据已经打乱顺序了for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+"");}}
}
13. 数组的内存图
相关文章:

小黑子—Java从入门到入土过程:第四章
Java零基础入门4.0Java系列第四章1. 顺序结构2. if语句3. switch 语句3.1 default的位置和省略3.2 case 穿透3.3 switch 新特性 (jdk12开始)4. for 循环5. while 循环6.do...while 循环7. 无限循环8. 跳转控制语句9. 练习9.1 逢七过9.2 平方根9.3 求质数…...

数据库原理及应用(四)——SQL语句(2)SQL基础查询以及常见运算符
一、SELECT语句基础 数据库查询是数据库的核心操作,SELECT 语句用于从数据库中选取数据。 SELECT [ALL/DISTINCT] <列名>,<列名>...FROM <表名或视图名>,<表名或视图名>[WHERE <条件表达式>][GROUP BY <列名1> [HAVING <条…...

(算法基础)Floyd算法
适用情景Floyd算法适用于多源汇最短路,也就是他问你比如说从3号点到6号点的最短路距离,比如说从7号点到20号点的最短路距离,而不是单源最短路(从1号点到n号点的最短路距离)。在这个算法当中允许负权边的存在。但在求最…...

SQL语法:浅析select之七大子句
Mysql版本:8.0.26 可视化客户端:sql yog 目录一、七大子句顺序二、演示2.1 from语句2.2 on子句2.3 where子句2.4 group by子句2.4.1 WITHROLLUP,加在group by后面2.4.2 是否可以按照多个字段分组统计?2.4.3 分组统计时,…...

中国人民大学与加拿大女王大学金融硕士——去有光的地方,并成为自己的光
光是我们日常生活中一个重要的元素,试想一下如果没有光,世界将陷入一片昏暗。人生路亦是如此,我们从追逐光、靠近光、直到自己成为光。人民大学与加拿大女王大学金融硕士项目是你人生路上的一束光吗 渴望想要成为一个更好的人,就…...

Python数据结构与算法篇(五)-- 二分查找与二分答案
1 二分法介绍 1.1 定义 二分查找又称折半查找、二分搜索、折半搜索等,是一种在静态查找表中查找特定元素的算法。 所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素。 使用二分查找算法,必须保证查找表中…...

小游戏也要讲信用
当下,小游戏鱼龙混杂,官方为能更好地保护用户、开发者以及平台的权益,近日宣布7月1日起试行小游戏主体信用分机制。 主体信用分是什么呢?简单来说,这是针对小游戏主体下所有小游戏帐号行为,对开发者进行评…...
贪心算法11
1. 贪心算法的概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心…...

【并发编程】JUC并发编程(彻底搞懂JUC)
文章目录一、背景二、什么是JUC?三、JUC框架结构四、JUC框架概述五、JUC中常用类汇总六、相关名词进程和线程进程线程创建线程的几种常见的方式并发和并行用户线程和守护线程七、synchronized 作用范围:八、Lock锁(重点)什么是 Lock锁类型Lock接口lock()…...

Compose 动画 (七) : 高可定制性的动画 Animatable
1. Animatable和animateDpAsState的区别是什么 Animatable是Android Compose动画的底层API,如果我们查看源码,可以发现animateDpAsState内部是调用的animateValueAsState,而animateValueAsState内部调用的是Animatable animateDpAsState比A…...

vue3组件传值
1.父向子传值 父组件 引入子组件 import Son from ./components/Son.vue 设置响应式数据 const num ref(99) 绑定到子组件 <Son :num"num"></Son> 子组件 引入defineProps import { defineProps } from vue; 生成实例接收数据 type设置接收类…...

小白开发微信小程序00--文章目录
一个小白,一个老牛,空手能不能套白羊,能不能白嫖?我告诉你,一切都so easy,这个系列从0到106,屌到上天,盖过任何一个,试问,网上讲微信小程序开发的,…...

随手记录第九话 -- Java框架整合篇
框架莫过于Spring了,那就以它为起点吧。 本文只为整理复习用,详细内容自行翻看以前文章。 1.Spring 有人说是Spring成就Java,其实也不是并无道理。 1.1 Spring之IOC控制反转 以XML注入bean的方式为入口,定位、加载、注册&…...

电影《铃芽之旅》观后感
这周看了电影《铃芽之旅》,整部电影是新海诚的新作。电影讲述的是女主铃芽为了关闭往门,在日本旅行中,遭遇灾难的故事。 (1)往昔记忆-往昔之物 电影中,有很多的“往门”,换成中国的话说…...

Web自动化测试(二)(全网最给力自动化教程)
欢迎您来阅读和练手!您将会从本章的详细讲解中,获取很大的收获!开始学习吧! 2.4 CSS定位2.5 SeleniumBuilder辅助定位元素2.6 操作元素(键盘和鼠标事件) 正文 2.4 CSS定位 前言 大部分人在使用selenium定…...
【C语言经典例题!】逆序字符串
目录 一、题目要求 二、解题步骤 ①递归解法 思路 完整代码 ②循环解法 思路 完整代码 嗨大家好! 本篇博客中的这道例题,是我自己在一次考试中写错的一道题 这篇博客包含了这道题的几种解法,以及一些我自己对这道题的看法ÿ…...

21 - 二叉树(三)
文章目录1. 二叉树的镜像2. 判断是不是完全二叉树3. 完全二叉树的节点个数4. 判断是不是平衡二叉树1. 二叉树的镜像 #include <ctime> class Solution {public:TreeNode* Mirror(TreeNode* pRoot) {// write code hereif (pRoot nullptr) return pRoot;//这里记得要记得…...

【A-Star算法】【学习笔记】【附GitHub一个示例代码】
文章目录一、算法简介二、应用场景三、示例代码Reference本文暂学习四方向搜索,一、算法简介 一个比较经典的路径规划的算法 相关路径搜索算法: 广度优先遍历(BFC)深度优先遍历(DFC)Di jkstra算法&#…...
纽扣电池澳大利亚认证的更新要求
澳大利亚强制性安全和信息标准草案具体规定了对含有纽扣电池和纽扣电池以 及纽扣电池和纽扣电池本身的消费品的要求, 适用范围 1.本法规适用于: 纽扣锂电池(任何尺寸和类型); 直径为16毫米或以上的纽扣锂电池: 一起提供的纽扣电池(未预先安装在产品中)。 2.但是&…...

零代码零距离,明道云开放日北京站圆满结束
文/麦壁瑜 编辑/李雨珂 2023年3月17日,为期一天的明道云开放日北京站圆满结束。本次开放日迎来超过100名伙伴和客户现场参会,其中不乏安利、通用技术集团、民生银行、迈外迪、DELSK集团、中国人民养老保险、北京汽车等知名企业代表。北京大兴机场、作业…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...