尚硅⾕Java⼊门视频教程第三章——数组
尚硅⾕Java⼊门视频教程第三章
第⼆章复习
课后习题
1. 如果⼀个数如果恰好等于它的因⼦之和,这个数就称为"完数"。(因⼦:除去这个数本⾝的约数),例如6=1+2+3。
编程:出1000以内的所有完数。
class WanShu{
public static void main(String[] args){
System.out.println("1-1000之间的完数有:");
int sum;
for(int i =1;i <=1000;i++){
sum =0;
//for(int j = 1;j < i;j++){
//优化
for(int j =1;j <= i/2;j++){//⼤于i/2的数,另⼀个相乘的因⼦⼀定在1-2之间,因此不可能出现
if(i % j ==0){
sum += j;
}
}
if(sum == i){
System.out.println(i);
}
}
}
}
复习
嵌套循环典型例题
1. 打印如下的图形:菱形1
java定义一维数组并赋值*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
class ForForTest{
public static void main(String[] args){
for(int i =1; i <=5; i++){
for(int j =1; j <=5-i; j++){
System.out.print(" ");
}
for(int k =1; k <= i; k++){
System.out.print("* ");
}
System.out.println();
}
for(int i =1; i <=4; i++){
for(int j =1; j <= i; j++){
System.out.print(" ");
}
for(int k =1; k <=5- i; k++){
System.out.print("* ");
}
System.out.println();
}
}
}
2. 九九乘法表
/*
九九乘法表
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
。。。
9 * 1 = 9 。。。 9 * 9 = 81
*/
class NineNineTable {
public static void main(String[] args){
for(int i =1;i <=9;i++){
for(int j =1;j <= i;j++){
System.out.print(i +" * "+ j +" = "+ i*j +" "); }
System.out.println();
}
}
}
3. 输出100以内所有的质数
/
*
100以内的所有质数的输出。
质数:素数,只能被1和它本⾝整除的⾃然数。-->从2开始,到这个数-1结束为⽌,都不能被这个数本⾝整除。
最⼩的质数是:2
*/
class PrimeNumberTest2 {
public static void main(String[] args){
int count =0;//记录质数的个数
//获取当前时间距离1970-01-01 00:00:00 的毫秒数
long start = System.currentTimeMillis();
label:for(int i =2;i <=100000;i++){//遍历100000以内的⾃然数
for(int j =2;j <= Math.sqrt(i);j++){//j:被i去除
if(i % j ==0){//i被j除尽
continue label;
}
}
//能执⾏到此步骤的,都是质数
count++;
}
//获取当前时间距离1970-01-01 00:00:00 的毫秒数
long end = System.currentTimeMillis();
System.out.println("质数的个数为:"+ count);
System.out.println("所花费的时间为:"+(end - start));
}
}
补充:衡量⼀个代码的优劣
1. 正确性
2. 可读性
3. 健壮性
4. ⾼效率与低存储:时间复杂度、空间复杂度(衡量算法的好坏)
Ecplise的安装使⽤
安装
Ecplise可以在官⽹进⾏下载安装:
安装时可选exe安装程序或直接下载压缩包,在使⽤exe安装程序安装时速度⾮常慢且经常失败,建议直接下载压缩包。
eclipse-jee-2022-03-R-win32-x86_64的压缩包如下:
链接:pan.baidu/s/1-VT-nYELPmUywp4uLAMlJA
提取码:p1re
使⽤注意:
⼀定要将⽂件编码格式修改为utf-8!
其余设置如宋⽼师课程所述即可。
第3章:数组
3.1 数组的概述
数组(Array),是多个相同类型数据按⼀定顺序排列的集合,并使⽤⼀个名字命名,并通过编号的⽅式对这些数据进⾏统⼀管理。
数组相关的概念:
数组名
元素
⾓标、下标、索引
数组的长度:元素的个数
数组的特点:
1. 数组是有序排列的
2. 数组本⾝是引⽤数据类型,⽽数组中的元素可以是任何数据类型,包括基本数据类型和引⽤数据类型。
3. 创建数组对象会在内存中开辟⼀整块连续的空间,⽽数组名中引⽤的是这块连续空间的⾸地址。
4. 数组的长度⼀旦确定,就不能修改。
数组的分类:
① 按照维度:⼀维数组、⼆维数组、三维数组、…
② 按照元素的数据类型分:基本数据类型元素的数组、引⽤数据类型元素的数组(即对象数组)
3.2 ⼀维数组的使⽤
① ⼀维数组的声明和初始化
② 如何调⽤数组的指定位置的元素
③ 如何获取数组的长度
④ 如何遍历数组
public class ArrayTest {
public static void main(String[] args){
//①⼀维数组的声明和初始化
//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进⾏
int[] ids;
ids =new int[]{1001,1002,1003,1004};
//1.2 动态初始化:数组的初始化和数组元素的赋值操作分开进⾏
String[] names =new String[5];
//错误的写法:
// int[] arr1 = new int[];
// int[5] arr2 = new int[5];
// int[] arr3 = new int[3]{1,2,3};
//也是正确的写法:
int[] arr4 ={1,2,3,4,5};//类型推断
//总结:数组长度⼀旦初始化完成,其长度就确定了
/
/2.如何调⽤数组的指定位置的元素:通过⾓标的⽅式调⽤。
//数组的⾓标(或索引)从0开始的,到数组的长度-1结束。
names[0]="王明";
names[1]="王贺";
names[2]="张学良";
names[3]="张巨龙";
names[4]="王宏志";
//names[5] = "周杨";//运⾏错误:java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 //3.如何获取数组的长度
//属性:length
System.out.println( names.length);
System.out.println(ids.length);
//4. 如何遍历数组
/*System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);*/
for(int i =0;i < names.length;i++){
System.out.println(names[i]);
}
}
}
⑤ 数组元素的默认初始化值
数组元素是整型:0
数组元素是浮点型:0.0
数组元素是char型:0或’\u0000’(ASCII码为0的值),⽽⾮’0’
数组元素是boolean型:false
数组元素是引⽤数据类型:null,⽽⾮“null”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论