《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%8sn", "Index", "Value");
for(int counter = 0; counter<array.length; counter++)
System.out.printf("%5d%8dn", counter, array[counter]);
}
}
}
zhihu@Solo | weibo@从流域到海域
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 安全通告 | Apache SkyWalking SQL注入漏洞安全风险公告(CVE-2020-13921)
- Cmd Markdown 迁移备份的流程
- PyTorch3:计算图torch.autograph
- spark shell 配置 Kryo 序列化
- Mac里捣腾Kerberos(一)
- Spark on K8S 访问 Kerberized HDFS
- Apache Beam的Docker Demo
- docker login 报错了...
- Spark-Submit 和 K8S Operation For Spark
- Spark的Dockerfile分析
- Spark on Kubernetes在Mac的Demo
- Python的Wand模块
- 机器学习第4天:预测1立方米混凝土抗压强度
- 硬件笔记之GP106-90 3GB GTX1060 3GB魔改
- Java BigDecimal 的舍入模式(RoundingMode)详解