JavaBasic_06
二维数组
二维数组定义格式
格式1
数据类型 变量名 = new 数据类型m;
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
格式2 灵活性
数据类型 a = new 数据类型m;
a[0] = new 数据类型[一维数组中包含的元素个数];
...
...
...
a[m] = new 数据类型[一维数组中包含的元素个数];
格式3
数据类型 变量名 = new 数据类型{{元素…},{元素…},{元素…}};
简化版格式:数据类型 变量名 = {{元素…},{元素…},{元素…}};
举例:int arr = {{1,2,3},{4,6},{6}};
/* 定义一个三维数组,并初始化之。 写一个打印函数,负责打印三维数组中的数据,并测试。 三维数组,联想三维空间 */ public class homework04 { public static void main(String[] args) { int[][][] array = {{{1, 2}, {3, 4}}, {{5, 6 }, {7 ,8}}}; for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ for(int k = 0; k < 2; k++) { System.out.print(array[i][j][k]); } System.out.println(); } System.out.println(); } } }
/* 杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 */ public class TriangleYang { public static void main(String[] args) { int n = 5; int[][] tri = triangleYang(n); printArray(tri); } //打印输出数组 public static void printArray(int [][]a){ 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.print("\n"); } } //构建杨辉三角 public static int[][] triangleYang(int n){ int [][]tri = new int[n][]; //当杨辉三角的函数为1,或2的固定值 if(n == 1)//杨辉三角只有一行 { tri[0] = new int[1]; tri[0][0] = 1; }else if(n == 2){ //杨辉三角只有两行 tri[0] = new int[1]; tri[0][0] = 1; tri[1] = new int[2]; tri[1][0] = 1; tri[1][1] = 1; } //杨辉三角大于等于两行 tri[0] = new int[1]; tri[0][0] = 1; tri[1] = new int[2]; tri[1][0] = 1; tri[1][1] = 1; for(int i=2 ; i < tri.length; i++) { tri[i] = new int[i + 1];//[0, i-1] tri[i][0] = 1; tri[i][i] = 1; //a[i][j] = a[i-1][j-1] + a[i-1][j] for(int j = 1; j < tri[i].length -1; j++) { tri[i][j] = tri[i-1][j-1] + tri[i-1][j]; } } return tri; } }
递归
递归思想
方法定义中调用方法本身的现象(方法自己调用自己)
递归注意实现
要有出口,否则就是死递归(调用自己的这个过程,在满足一定条件的时候会终止)
次数不能太多,否则就内存溢出(递归的深度,不能太深)
构造方法不能递归使用(留着到类的时候思考)
递归核心的核心思想(汉诺塔问题)
64个盘片移动序列怎样?没有办法解决
假设前63个盘片,已经移动完毕,第64盘片
假设前62个盘片,已经移动完毕,第63盘片
假设前61个盘片,已经移动完毕,第62盘片
.....
假设前2个盘片,已经移动完毕,第3盘片
假设前1个盘片,已经移动完毕,第2盘片
有些问题?随着问题规模的增大,变得无法解决,但是同一个问题规模不是很大的时候,我们是知道问题的解。
递归的算法:分而治之
算法思路:把大规模的问题,转化为相似的多个小规模问题
递归在某些情况下可以转化为循环
较复杂的问题从递归转化到循环,借助一个工具——栈
1.在栈内存中,内存的分配单位,是以方法为单位的
2.换句话说,每一个方法的运行的时候,在栈内存上,会给每一个调用的方法,分配一片只属于该方法的存储空间。
3.在这片只属于方法这片的存储空间中,
1.局部变量表(该方法中定义的局部变量)
2.方法的返回地址
在栈空间中,这片只属于方法的存储空间,叫做栈帧。
何时,给方法分配栈帧空间?程序运行时,方法被调用
栈帧何时被回收?方法执行完毕之后,栈帧立马被系统回收。
类与对象
客观世界的组成:
1.对象
2.对象之间的相互关系
对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象:
1.由一组属性 java中数量 -> 变量(与之前学习的局部变量不同,定义的位置不同) 表征对象外观
2.操作(功能)组成。操作就是行为 -> 方法 表征对象的行为
类
类是用来生成对象的模板
人:两个研究,一个鼻子,一张嘴巴,两个(有这些属性) 人这个类别有很多共有的属性
每个人类(对象):鹰钩鼻,嘴巴长歪了
每个个体(对象)属性值不同
同一个类可以有多个对象:多个对象的属性值可以不同
一个学生类: id name age
学生对象:
(张三这个具体的学生对象),id = 1,name = "张三", age = 18
(李四这个具体的学生对象),id = 2,name = "李四", age = 19
类和对象关系
类就是我们程序员自定义的数据类型 类(属性(量), 行为:方法,操作)
对象:类比于 int i i表示一个具体的int类型的实例,对象就是我们自定义类型的一个实例
面向过程
面向过程:代码单位是函数(相当于我们java语言中的方法) 方法或者说函数: 代表的是行为
如果用面向过程的语言来解决一个实际问题:把一个静态的问题转化为一系列的动作,把动作用函数表示。
比如:司机开车
系安全带
插钥匙
打火
打转向灯,打喇叭
......
用函数描述着一系列的动作
面向对象
比如司机开车
创建司机对象
创建车对象
司机发送消息给车对象,让车启动
在面向对象中
发送消息,就相当于方法调用,调用一次方法,就像对于是给这个对象发送了此命令
如:System.out.println();
JavaBasic_06的更多相关文章
- ADF_Starting系列1_JDeveloper IDE开发环境简介
2013-05-01 Created By BaoXinjian
随机推荐
- Oracle RAC管理及维护命令详解
Oracle Clusterware的命令集可以分为以下4种: 节点层:osnodes 网络层:oifcfg 集群层:crsctl, ocrcheck,ocrdump,ocrconfig 应用层:sr ...
- vuex状态持久化
npm install vuex-persistedstate 在store.js里 import createPersistedState from 'vuex-persistedstate' co ...
- 【转】Vue 2.0封装axios笔记
前言 单页面应用大多采用前后端分离开发思路,我们知道,前端和后端交互有多中方式(服务器端渲染.Ajax.websocket等),今天我们主要讲解Ajax部分. 最近团队讨论了一下,Ajax 本身跟 V ...
- Wireshark:No interfaces found解决方法(Windows 10)
启动Wireshark时有时会报“No interfaces found”,找不到网卡进行截包.造成这种情况的原因可能有两个,一是npf服务没启动,二是当前用启对网卡没有拦截权限. 一.npf服务未启 ...
- 逆袭之旅DAY16.东软实训.Oracle.匿名块
2018-07-1216:41:19 六.匿名块 .定义匿名块: declare 定义部分: ---可选部分 begin 执行部分: ---必选部分 exception 异常处理部分: ---可选部分 ...
- linux磁盘管理 磁盘查看操作
df查看磁盘分区使用状况 df --显示磁盘分区使用状况 'l' 仅显示本地磁盘(默认) 'a' 显示所有文件系统的磁盘使用情况,包含比如/proc/ 'h' 以1024进制计算最合适的单位显示磁盘容 ...
- JAVA⑤
1.定义一个常量 * * 01.一旦被赋予初始值 不允许被改变 * 02.常量名全大写 * 03.如果有多个单词,每个单词使用_ 分割 2. == : * 01. 数值类型 使用的时候 比较的是 值 ...
- selenium(六)Headless Chrome/Firefox--PhantomJS停止支持后,使用无界面模式。
简介: 以前都用PhantomJS来进行无界面模式的自动化测试,或者爬取某些动态页面. 但是最近selenium更新以后,'Selenium support for PhantomJS has bee ...
- 生产者与消费者问题,C++利用bind基于对象实现与面向对象实现
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- iOS 设置不同环境下的配置 Debug Release 生产 测试 等等
其实这个问题大家都知道,但是一般都是清楚一些皮毛的东西,只能进行一些简单的应用.在这里详细说一下模式切换的使用. Xcode给我们自带了两种编译模式Release 和 Debug,通常情况下我们可以利 ...