Java(第八章)

第八章

一、        什么是数组及其作用?

定义:具有相同数据类型的一个集合

作用:存储连续的具有相同类型的数据

二、        java中如何声明和定义数组

l  声明和定义的语法:

数据类型[ ] 数组名;( int[ ] nums ; )

或 数据类型 数组名[];  ( int nums[ ] ;)

l  为数组分配空间

数组名=new 数据类型[数组的长度]; ( nums=new int[5] ;)

l  声明数组,同时分配空间

数据类型[]数组名= new 数据类型[数组的长度];

数据类型 数组名[]=new 数据类型[数组的长度];

( int[ ] nums=new int[5] ;)   ( int nums[ ]=new int[5] ;)

三、        如何读取数组中的元素— 通过下标(索引)来获取

下标(索引)是从0开始,最大下标为  数组长度-1

下标越界:ArrayIndexOutOfBoundsException

int类型的数组,每个元素的默认值为0

String类型的数组,每个元素的默认值为null

1、            获取单个元素的值

数据类型 变量名=数组名[下标];

2、            循环读取数组中的每个元素

数组的长度:数组名.length 属性自动计算

for(int i=0;i<数组名.length ;i++){

数组名[i];

}

四、如何给数组中的元素赋值

方式1(赋予数组固定值):

声明数组,分配空间,并赋值

(数组的长度由值的个数决定)

数据类型  数组名[]=new 数据类型[]{值1,值2…值n};

数据类型 []数组名={值1,值2…值n};

说明:[]中括号可以放在数组名前面或后面

方式2:动态的给数组赋值(从键盘中输入)

Scanner  input = new Scanner(System.in);

for(int i=0;i<数组名.length ; i++){

String类型的数组名[i]= input.next ();

int类型的数组名[i]= input.nextInt ();

double类型的数组[i]=input.nextDouble();

}

五、数组排序问题

使用Arrays. sort(数组名);

实现对数组中的元素按升序或降序输出

六、求最大值或最小值

实现思路:将数组中的第1个元素的值,假想成最大(小)值【赋值】;然后数组中的每个元素和假想的这个最大(小)数进行比较,如果数组中的某个元素的值,比最大(小)数要大(小),将该元素的值,保存到假想的最大(小)值对应的变量中【给假想最值变量赋值】

七、求数组中最值的位置

1、            在循环的外面,定义变量k(赋值为0),用于保存最值的下标

2、            在循环中,比较找出最值的同时,给变量k赋值

八、斐波那契数列

1,1,2,3,5,8,13,21,34……求第20个数字的值?(使用循环)

规律:第i个 + 第(i+1)个 = 第(i+2)个

步骤1:定义数组,数组长度为20

int []nums=new int[20];

步骤2:根据规律,获取第0个和第1个数的初值

nums[0]=1;

nums[1]=1;

步骤3:通过循环,给数组中的所有元素赋值

for ( int i=0;i<nums.length-2;i++){

nums [i+2]=nums[i]+nums[i+1];

}

for(int i=2;i<nums.length;i++){

nums[i]=nums[i-2]+nums[i-1];

}

步骤4:输出nums[19]的值

九、(一、)已知一个数组,如何将一个【新的元素】插入到数组中的指定位置?

实现思路:

1、            定义一个长度为 【已知数组长度+1】的新数组YY

2、            使用第1个循环,将已知数组中的每个元素的值,保存到新数组YY中

3、            使用第2个循环,将新数组YY中的元素,从倒数第2个(新数组YY的长度-2)元素开始,到指定的位置,依次向后移动1个位置

4、            直接将【新的元素】赋值给新数组YY中的指定元素(下标为指定位置)即可

5、            使用第3个循环,输出新数组YY的值

(二、)已知1个按升序或降序排列的数组,向该数组中,插入一个新的值,插入成功后,数组仍然按照升序或降序排列?

1、            设置插入位置变量index的初始值为:数组长度-1;

2、            使用第1个循环,让插入的数值和数组中的每个元素进行比较,如果插入的数值比数组中某个元素的值要大或小,把该元素的下标的值, 赋予插入位置变量index,同时终止循环

3、            使用第2个循环,移动位置,从【数组长度-2】到【插入位置变量index】

4、            将插入的值,保存到数组下标为index的位置

5、            使用第3个循环,输出数组所有元素的值,同时输出新值插入的位置

--------------------------------------------------------------------------------

[dream1]类型为int、char

[dream2]case 结构可以有多个

[dream3]程序跳出switch结构

[dream4]常量的值不能相同

[dream5]和if结构中的else作用相同

时间: 2024-08-25 06:46:35

Java(第八章)的相关文章

Java 第八章 类的方法(一) 笔记

Java 第八章 类的方法(一) 一.类的方法语法: 访问修饰符 返回值类型 方法名(){             方法体:      } 二.方法名的规范:     1.必须以字母."_"或"$"开头     2.可以有数字,但不能以数字开头.     3.如果方法名是多个单词组成 ,第一个单词的首字母小写,      其后单词首字母单词大写.     4.方法名都采用动词. 三.方法的返回值     1.有返回值:必须告知返回值的数据类型,并且返回相应的值. 

“全栈2019”Java第八章:IntelliJ IDEA设置注释不显示在行首

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八章:IntelliJ IDEA设置注释不显示在行首 下一章 "全栈2019"Java第九章:解释第一个程序 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Jav

[Effective Java]第八章 通用程序设计

第八章      通用程序设计 45.      将局部变量的作用域最小化 将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 要使用局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方才声明,不要过早的声明. 局部变量的作用域从它被声明的点开始扩展,一直到外围块的结束外.如果变量是在“使用它的块”之外被声明有,当程序退出该块之后,该变量仍是可见的,如果它在目标使用区之前或之后意外使用,将可能引发意外错误. 几乎每个局部变量的声明都应该包含一个初始化表达式,如

java第八章:集合容器之Set接口

Set接口(唯一,无序(添加顺序)) 实现类:HashSet (唯一,无序)     TreeSet(唯一,有序(大小顺序)) 子类:LinkedHashSet(唯一,有序(添加顺序)) HashSet:采用哈希表的存储结构:在HashSet中添加元素,实现唯一性的原理:添加元素时候,会先调用Object中的hashcode()方法,计算哈希码,然后确定摆放的位置.如果哈希码不同,就不会调用Object中的equals()方法比较内容:如果哈希码相同,再调用equals()方法比较内容,内容相同

Java第八章 之 继承、抽象、重写

1 /** 2 3 继承:子类继承父类的属性和方法 4 5 */ 6 7 //定义一个父类 8 9 public class Fu{ 10 11 String name; 12 13 int age; 14 15 public void work(){ 16 17 System.out.println("在工作"); 18 19 } 20 21 } 22 23 //定义一个子类 24 25 public class Zi extends Fu{ 26 27 /**重写父类的方法 28

“全栈2019”Java第七章:IntelliJ IDEA注释快捷键

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第七章:IntelliJ IDEA注释快捷键 下一章 "全栈2019"Java第八章:IntelliJ IDEA设置注释不显示在行首 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,

“全栈2019”113篇Java基础学习资料及总结

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一章:安装JDK11(Mac) "全栈2019"Java第二章:安装JDK11(Windows) "全栈2019"Java第三章:安装开发工具IntelliJ IDEA "全栈2019"Java第四章:创建第一个Java程序 "全栈2019

七月第四周进度总结

本周,坚持了每天学习Java一小时的要求学习了java第六章对象,类,包和接口.编写程序2017级的java开课前考试的学生信息管理(仍不完善). 一,观看了WEB03_JavaScript的视频讲解,学习了:javascript ECMAScript 的 1.语法 2.变量:只能使用var定义,如果在函数的内容使用var定义,那么它是一个局部变量,如果没有使用var它是一个全局的.弱类型! 3.数据类型:原始数据类型(undefined/null/string/number/boolean)

Java 线程第三版 第八章 Thread与Collection Class 读书笔记

JDK1.2引入最有争议性的改变是将集合类默认为不是Thread安全性的. 一.Collection Class的概述 1. 具有Threadsafe 的Collection Class: java.util.Vector(List) 列表集合,通过索引操作. java.util.Stack(List) 继承自Vector,提供LIFO的顺序操作push进入,pop出元素. java.util.Hashtable(Map) 一个简单.无序的key与value的映射. java.util.conc

《Java并发编程实战》第八章 线程池的使用 读书笔记

一.在任务与执行策略之间的隐性解耦 有些类型的任务需要明确地指定执行策略,包括: . 依赖性任务.依赖关系对执行策略造成约束,需要注意活跃性问题.要求线程池足够大,确保任务都能放入. . 使用线程封闭机制的任务.需要串行执行. . 对响应时间敏感的任务. . 使用ThreadLocal的任务. 1. 线程饥饿死锁 线程池中如果所有正在执行任务的线程都由于等待其他仍处于工作队列中的任务而阻塞,这种现象称为线程饥饿死锁. 2. 运行时间较长的任务 Java提供了限时版本与无限时版本.例如Thread