《Java程序设计基础》 第5章手记

《Java程序设计基础》 第5章手记

- 一维和多维数组的定义 - 数组元素的访问 - 字符串及其应用

这节课给大家发福利,将会在后面贴实验作业的代码。

一维数组和多维数组的定义&数组元素的访问

Java对数组等引用对象的内存分配: 引用变量:为数组或对象起的一个名称。在堆中创建一个数组或对象后,还可在栈中定义一个引用变量存放该数组或对象在堆内存中的首地址(对象的句柄),以后就可在程序中使用栈的引用变量来访问堆中的数组或对象。 数组和对象在没有引用变量指向它时,就会变成垃圾,不被使用,但占内存,在随后不确定的时间释放。 一维数组和多维数组的定义类似于C#,基础知识不再赘述,请参考原书。 常见格式:

int[] Array = new int[] //new int[]中括号里指明数组长度
int[][] Array = new int[][] //多维数组必须指明第一维的长度

遍历数组foreach语句:

//逐个打印数组中的元素
for (type element : arr)
    {
       System.out.println(element);
       ……
     }

Ps:在给数组赋值时,并不推荐这这种方法,可能会出现错误。

Java多维数组与C语言的区别: Java中无真正的多维数组,只是数组的数组,在逻辑上Java数组不是规则的矩形,也就是说多维数组中每行的元素可以不同。 C语言的多维数组有真正的维度,二维数组有行指针和列指针的区别,但必须是严格的矩形,即每行数组元素个数相同。

数组Array的常用方法

课本p66

方法

简要说明

binarySearch(a,key)

返回key在升序数组a中首次出现的地址,若未找到则返回负值

sort(a)

对数组a进行升序排列,结果保存在数组a中

copyOf(a,length)

截取数组a中长度为length的函数赋值给调用数组

epuals(a,b)

判断a和b两个数组对应元素是否相等,相等则返回true(boolean值),否则返回false

字符串及其应用

创建常用格式:

String str = "Hello";

str = "Hello" + "World" //str的值为"HelloWorld"

String类的常用方法

课本 77

方法

简要说明

a.length;

返回字符串a的长度

a.equals(b)

判断a和b两个字符串是否相等,相等返回true,否则返回false

substring(i)

返回从i开始的字符串(i是整型的是索引值,下同)

substring(i,j)

返回从到j的字符串

charAt(i)

返回位置为i的索引值

a.indexOf(b)

返回字符串b在a中首次出现的位置

a.compareTo(b)

比较字符串a和b的大小,规则同于C语言,a>b返回正值,a=b返回0,a

实验4-1到4-4代码

4-1

import java.util.*;
public class Shiyan4_1
{
    public static void main(String[] args)
    {
        int max,min;
        int[] a = new int[5];
        Scanner reader = new Scanner(System.in);

        System.out.println("请输入5个数");
        for(int i =0; i<a.length; i++)
        {
            a[i] = reader.nextInt();
        }

        max = a[0];
        min = a[0];
        for(int j =1 ; j<a.length; j++)
        {
            if(a[j]>max) max = a[j];
            if(a[j]<min) min = a[j];
        }

        System.out.println("最大和最小的数分别为:" +max +" " +min);
    }
}

4-2

import java.util.Arrays;
public class Shiyan4_2
{
    public static void main(String[] args)
    {
        int[][] a = new int[2][3];

        for(int i=0; i<a.length; i++)
        {
            for(int j=0; j<a[i].length; j++)
                a[i][j] = (int)(Math.random()*100);
        }

        for(int i=0; i<2; i++)
            Arrays.sort(a[i]);

        for(int i=0; i<2; i++)
            for(int j=0; j<a[i].length; j++)
                System.out.println(a[i][j]);

    }
}

4-3

public class Shiyan4_3
{
    public static void main(String[] args)
    {
        String str1 = "Hello";
        String str2 = "World";
        String str3 = "HelloWorld";
        String str = str1 + str2;

        System.out.println(str);
        System.out.println("str长度:" +str.length());
        System.out.println("or在str中出现的位置:" +str.indexOf("or"));
        System.out.println("转为小写:" +str.toLowerCase());
        System.out.println("转为大写:" +str.toUpperCase());
        System.out.println("str和str3的值是否相等:" +str.equals(str3));

        if(str==str3)   System.out.println("True");
        else            System.out.println("False");
    }
}

4-4

public class InitArray {
    public static void main(String[] args)
    {
        if(args.length != 3)
            System.out.println( 
               "Error:请提供三个整数值, 分别表示数组长度、\n" +
               "首元素初值、后续元素的增量.");
        else
        {
            int arrayLength = Integer.parseInt(args[0]); 
            int array[] = new int[arrayLength];// create array
            //把第二、三个参数分别保存在两个整型变量中
            int arrayfirst = Integer.parseInt(args[1]);
            int arraygrow = Integer.parseInt(args[2]);

            //两个整型值分别作为数组第一个元素的初值和增量,
            //通过循环对整个数组元素赋值
            array[0] =arrayfirst;

            for(int i=1; i<array.length; i++)
                array[i] += arraygrow*i;
            System.out.printf("%s%8s\n", "Index", "Value");
            for(int counter = 0; counter<array.length; counter++)
                System.out.printf("%5d%8d\n", counter, array[counter]);
         }
    }
}

zhihu@Solo | weibo@从流域到海域

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题

foreach语句使用总结 增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一...

2787
来自专栏CDA数据分析师

一文读懂如何用 Python 实现6种排序算法

总结了一下常见集中排序的算法 ? 归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。 具体...

2159
来自专栏WindCoder

《简明 Python 教程》学习笔记-运算符与表达式

又两天没更新了,暂且同步两篇之前的笔记。运算符与表达式这一块感觉主要就是运算符与它们的用法以及优先级了。

1072
来自专栏编程理解

排序算法(七):快速排序

快速排序是通过分治的方式,根据选定元素将待排序集合拆分为两个值域的子集合,并对子集合递归拆分,当拆分后的每个子集合中元素个数为一时,自然就是有序状态。

1073
来自专栏北京马哥教育

一文搞懂 Python 正则表达式用法

1453
来自专栏CDA数据分析师

一文读懂如何用 Python 实现6种排序算法

总结了一下常见集中排序的算法 ? 归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。 具体的...

22010
来自专栏PPV课数据科学社区

一文读懂如何用 Python 实现6种排序算法

原文链接:https://my.oschina.net/liuyuantao/blog/749329 总结了一下常见集中排序的算法 ? 归并排序 归并排序也称合...

3797
来自专栏北京马哥教育

正则表达式基本语法

\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。^匹...

3627
来自专栏一个会写诗的程序员的博客

《零基础 Java 开发 》 第五章 数组第五章 数组

数组是一个基础的数据结构,它用来存储一组相同类型的元素的集合。数组非常有用,例如Java提供的集合类ArrayList、HashMap等都是基于数组来实现的。

1323
来自专栏Nian糕的私人厨房

JavaScript 字符串

toString() 方法,返回一个表示该对象的字符串,可以将所有的数据都转换为字符串,但是要排除掉 null 和 undefined

897

扫码关注云+社区

领取腾讯云代金券