一、作用域

1、作用域的概念

所谓的作用域是指引用可以作用到的范围。

一个引用的作用域是从引用定义位置到包裹它的最近的大括号的结束位置。只有在作用域范围内才可以访问到引用,超出作用域无法访问引用。

定义多个同名字的引用,作用不可重叠,如果重叠,编译会报错。

2、作用域实例

public class Demo06{
public static void main(String[] args) {
{
int i = 2; //作用域仅限该大括号内
}
System.out.println(i);
if(true){
int i = 1;
System.out.println(i);
}
}

二、数组

1、数组的概念

数组是长度固定,内容可变的存储多个同一类型数据的容器。

2、定义数组

a、方式一

类型[] 引用名称 =new 类型[长度];

**其中引用中的 [] 可以出现在引用名之前或之后;

这种方式定义的数组,只定义了长度,没有指定初始值,则初始值采用默认值。数值类型为0;char类型为‘a’;boolean类型的为false,引用类型的为null。

b、方式二

类型 [] 引用名称 = new 类型[]{数组的初始内容};
   **其中引用中的[]可以出现在引用名之前或之后

这种方式定义的数组,指定了数组的初始值,而数组的长度等于元素的个数。

c、方式三

类型[] 引用名称 = {数组的初始内容};

**其中引用中的[]可以出现在引用名之前或之后;

这种方式定义的数组,指定了数组的初始值,而数组的长度等于元素的个数。

实例:

public class Demo07{
public static void main(String args[]){
//1.定义数组方式一 int [] nums1 = new int[5];
int nums2 [] = new int[5];
char [] cs = new char[5];
boolean [] bs = new boolean[5];
String [] strs = new String[5];
System.out.println(nums1[0]);
System.out.println(cs[0]);
System.out.println(bs[2]);
System.out.println(strs[3]); //2.定义数组方式二
int [] nums = new int[]{1,3,5,7,9}; //3.定义数组方式三
int [] nums = {2,4,6,8,10};
}
}

3.数组的基本操作

a、获取数组中的元素

通过数组引用【元素的索引】就可以访问到数组的元素。所谓的索引就是元素在数组中的位置,索引由0开始,最大的索引是数组的长度 - 1。

获取数组的元素方式见上例子。

b、获取数组的长度

通过访问数组的length属性,可以得到数组的长度。

//2.获取数组的长度
int [] nums = {1,3,5,7,9};
System.out.println(nums.length);

c、遍历数组

两种方式:for循环和增强for循环。

//3.遍历数组 - 普通for
int [] nums = {1,3,5,7,9,11,13};
for(int i=0;i<nums.length;i++){
  System.out.println(nums[i]);
} 

//4.遍历数组 - 增强for循环 
int [] nums = {1,3,5,7,9};
for(int x : nums){
System.out.println(x); 
}

d、修改数组中的元素

//5.修改数组中的元素
int [] nums = {1,3,5,7,9};
for(int x : nums){
   nums[2] = 100;
System.out.print(x+" ");
}

4、数组常用应用

a、获取数组中的最大最小值

//6.获取数组中 最大值/最小值
int [] nums = {-23,-5,-3,-234,-2};
 if(nums.length > 0) {
int max = nums[0];
for(int x :nums) {
if(x > max) {
max = x;
}
}
}else {
  System.out.println("数组为空!");
}

b、查找数组中元素所在位置

//7.查找指定元素所在的位置

int [] nums = {2,3,65,23,6,3,78,9};
int find = 3;

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

if(find == nums[i]) {

System.out.println("数字"+find+"出现在数组"+i+"位");

}

}

c、翻转数组

//8.反转数组 0--4 1--3 2 -- 2 3 -- 1 4 --0
int nums [] = {2,3,65,23,6};
int nums2 [] = new int[nums.length];
for(int i=0;i<nums.length;i++){
   nums2[nums.length - 1 - i] = nums[i];
} 
for(int x : nums2){
System.out.println(x); 
}

5、数组排序

a、常见排序算法及其效率

b、冒泡排序:将数组中的数据从第一位开始依次比较,放到0~length-1处。

       //1.冒泡排序
int nums [] = {1,34,56,8,-32,7,-9,0,235};
for(int i=0;i<nums.length;i++){//当前要确定的是哪个位置的数
for(int j =nums.length-1;j>=i+1;j--){
if(nums[j-1]>nums[j]){
int tmp = nums[j-1];
nums[j-1] = nums[j];
nums[j] = tmp;
}
}
}
for(int x : nums){
System.out.println(x);
}

c、选择排序:将数组中的数据下标拿出来,比较该下标处数组的值和其余值的大小;如果比其他值大,则交换二者下标的值;并将二者的值相互交换。

原理图:

实例代码:

//2.选择排序
int nums [] = {1,34,56,8,-32,7,-9,0,235};
for(int i=0;i<nums.length;i++){
int tmp = i;
for(int j=i+1;j<nums.length;j++){
if(nums[j]<nums[tmp]){
tmp = j;
}
}
//换 tmp 和 i 指向的数
int x = nums[tmp];
nums[tmp] = nums[i];
nums[i] = x;
} for(int x : nums){
System.out.println(x);
}

JAVA作用域和排序算法介绍的更多相关文章

  1. 常用的排序算法介绍和在JAVA的实现(二)

    一.写随笔的原因:本文接上次的常用的排序算法介绍和在JAVA的实现(一) 二.具体的内容: 3.交换排序 交换排序:通过交换元素之间的位置来实现排序. 交换排序又可细分为:冒泡排序,快速排序 (1)冒 ...

  2. Java中的排序算法(2)

    Java中的排序算法(2) * 快速排序 * 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists). * 步骤为: * 1. 从数 ...

  3. java实现各种排序算法

    java实现各种排序算法 import java.util.Arrays; public class SomeSort { public static void main(String[] args) ...

  4. 常用的排序算法介绍和在JAVA的实现(一)

    一.写随笔的原因:排序比较常用,借此文介绍下排序常用的算法及实现,借此来MARK一下,方便以后的复习.(本人总是忘得比较快) 二.具体的内容: 1.插入排序 插入排序:在前面已经排好序的序列中找到合适 ...

  5. Java数组的排序算法

    在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...

  6. Java实现常见排序算法

    常见的排序算法有冒泡排序.选择排序.插入排序.堆排序.归并排序.快速排序.希尔排序.基数排序.计数排序,下面通过Java实现这些排序 1.冒泡排序 package com.buaa; import j ...

  7. java实现八大排序算法

    Arrays.sort() 采用了2种排序算法 -- 基本类型数据使用快速排序法,对象数组使用归并排序. java的Collections.sort算法调用的是归并排序,它是稳定排序 方法一:直接插入 ...

  8. java实现折半排序算法

    折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态. 折半插入排序( ...

  9. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

随机推荐

  1. 常用WinAPI函数整理------------转载

    常用WinAPI函数整理原创 玩撕你 发布于2019-09-04 20:06:55 阅读数 101 收藏展开 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底 ...

  2. Docker 基础入门

    Docker是一个开放的平台,将应用和基础设施分隔开来, 方便快速的交付软件.利用docker的提供的方法可以快速的测试和部署代码,显著的减少写代码和部署直接的延迟. Docker 平台(The Do ...

  3. 第1节 storm编程:3、storm的架构模型的介绍

    nimbus:主节点,接收客户端提交的任务,并且分配任务,新的版本当中nimbus已经可以有多个了 zookeeper集群:storm依靠zk来保存一些节点信息,nimbus将分配的任务信息都写入到z ...

  4. Broadcast机制(二)

    内容提纲: 在本节课当中,我会继续为大家讲解Android的广播机制,重点内容有以下的两个方面: a)         在应用程序当中注册BroadcastReceiver的方法 b)         ...

  5. C# 篇基础知识5——委托和事件

    事件处理程序是基于“委托”机制运行的. 1.委托 (1)委托的定义和使用 有时需要将一个函数作为另一个函数的参数,这时就要用到委托(Delegate)机制.例如设计一个马戏表演函数: //定义委托 d ...

  6. PHP登陆页面完整代码

      /* 包括的文件 */ /* login.php */ <?phprequire('./mysql.php');$username=$_REQUEST['username'];$passwd ...

  7. 微软重制Windows 1.0系统:祖师爷出山了

    Windows官方推特在7月1日发布了一条很有趣的动态,“向大家介绍全新的Windows 1.0,带MS-DOS.时钟等”.配发的视频回顾了从Windows 1.0/3.1到Windows 10期间, ...

  8. linux中df和du查看磁盘大小不一致解决方法

    挂了一块50G到/data目录下#  df -h Filesystem Size Used Avail Use% Mounted on /dev/xvdb1 50G 46G 1.2G 98% /dat ...

  9. synchronized和锁(ReentrantLock) 区别

    synchronized和锁(ReentrantLock) 区别 java的两种同步方式, Synchronized与ReentrantLock的区别 并发(一):理解可重入锁 可重入锁和不可重入锁 ...

  10. ACM-寻宝

    题目描述:寻宝 有这么一块神奇的矩形土地,为什么神奇呢?因为上面藏有很多的宝藏.该土地由N*M个小正方形土地格子组成,每个小正方形土地格子上,如果标有“E”,则表示该格可以通过:如果标有“X”,则表示 ...