首页 > 其他分享 >2024暑假第四周总结

2024暑假第四周总结

时间:2024-07-27 17:53:01浏览次数:7  
标签:总结 arr int System 2024 暑假 println public out

数组

容器,可以用来存储同种数据类型的多个值
需要结合隐式转换考虑
容器的类型和存储数据的类型保持一致

数组的定义:

格式一:
数据类型 [] 数组名
int [] array
格式二:
数据类型 数组名 []
int array []

数组初始化:在内存中,为数组容器开辟空间,并将数据存入容器中的过程

数组静态初始化和动态初始化的区别:
动态初始化:手动指定数组长度,由系统给出默认初始化
静态初始化:手动指定数组元素,系统根据元素个数,计算长度

静态初始化:

完整格式:
数据类型 []数组名 = new 数据类型 [ ] {元素1,元素2,元素三,…};
简化格式:
数据类型 []数组名 = {元素1,元素2,元素三,…};
数组长度定义后不变

动态初始化

初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 =new 数据类型[数组长度];

数组的地址值:

public class ArrayDemo1 {
    public static void main(String[] args) {
        int[] arr1 = new int[]{11,12,13,14};
        int[] arr2 = {11,12,13,14};
        String[] arr3 = new String []{"zhangsan","lisi","wangwu","zhaoliu"};
        String[] arr4 = {"zhangsan","lisi","wangwu","zhaoliu"};
        double[] arr5 = new double[]{161.5,189.6,179.9,193.8};
        double[] arr6 = {161.5,189.6,179.9,193.8};
        System.out.println(arr1);//[I@b4c966a
    }
}

地址值:[I@b4c966a
地址值的格式含义:[ :表示是一个数组
I :表示当前数组里面的元素都是int类型的
@ : 表示一个间隔符号(固定格式)
b4c966a:才是数组真正地址(十六进制)

数组元素访问格式:

数组名[索引];
索引:下标,角标
特点:从0开始,逐个+1,连续不间断

public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        //获取数组中的元素
        int number = arr[0];
        System.out.println(number);
        System.out.println(arr[1]);
    }
}

数组的内存图:

两个数组指向同一空间的内存图
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果。

数组遍历:

java中,关于数组的一个长度属性,length
调用方式:数组名.length
拓展:
自动生成数组的遍历方式
idea提供的:数组名.fori

常见问题

索引越界

public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        //长度5
        //最小索引:0
        //最大索引:4
        System.out.println(arr[10]);
    }
}

数组常见操作:

求最值
求和:

import java.util.Random;

public class ArrayDemo3 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100) + 1;
            arr[i] = number;
        }
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("所有数据的总和:" + sum);
        int temp = sum /arr.length;
        System.out.println("平均数"+ temp);
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (temp < arr[i]) {
                count++;
            }
        }
        System.out.println("一共有" + count + "个数据比平均数大");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

交换数据:
定义中间变量
打乱数据:
获取随机索引Random

import java.util.Random;

public class ArrayDemo4 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        Random r = new Random();
        int number = r.nextInt(arr.length);
        System.out.println(number);
    }
}

实例:

import java.util.Random;

public class ArrayDemo4 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[number];
            arr[number] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}

java内存分配

栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆:存储对象或者数组,new来创建的,都存储在堆内存中
堆内开发的空间有地址值
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用
寄存器:给CPU使用

方法

程序中最小的执行单元
main方法,主方法
作用:调用方法(解决代码重复问题) 提高代码复用性、可维护性
把一些代码打包,用的时候就调用
方法定义——一些代码打包
方法调用——手动调用

定义格式

最简单:
public static void 方法名 () {
方法体 (就是打包起来的代码);
}
调用:方法名 () ;
方法必须先定义后调用,否则报错
实例:

public class MethodDemo1 {
    public static void main(String[] args) {
        //调用方法
        playGame();
        playGame();
    }
    //定义一个方法
    //放在类内,main方法之外
    public static void playGame (){
        System.out.println("1");
        System.out.println("2");
        System.out.println("3");
        System.out.println("4");
        System.out.println("5");
    }
}
public class MethodDemo2 {
    public static void main(String[] args) {
        student();

    }
    public static void student(){
        System.out.println("张三");
        System.out.println("性别男");
        System.out.println("20岁");
        System.out.println("身高187");
    }
}
public class MethodDemo3 {
    public static void main(String[] args) {
        getSum();
    }
    public static void getSum(){
        int number1 = 10;
        int number2 = 20;
        int sum = number1 + number2;
        System.out.println(sum);
    }
}

带参数:
定义:
public static void 方法名(参数) {… …}

调用:

method(变量);
形参:方法定义中参数
实参:方法调用中参数
调用时,形参和实参必须一一对应
带返回值:
格式:
public static 返回值类型方法名(参数) {
方法体;
return 返回值;
}
调用:
直接调用:方法名(实参);
赋值调用:整数类型 变量名 = 方法名 (实参);
输出调用:System.out.println(方法名(实参));

public class MethodDemo4 {
    public static void main(String[] args) {
        //直接调用
        method1(10,30,50);
        //赋值调用
        int sum = method1(10,30,50);
        System.out.println(sum);
        //输出调用
        System.out.println(method1(10,30,50));;
    }
    public static int method1(int a, int b,int c) {
        return a + b + c;//返回给方法的调用处
    }
}

方法注意事项:
方法不调用就不执行
方法与方法是平级关系,不能互相嵌套定义(嵌套调用可以,不能嵌套定义)
方法的编写顺序和执行顺序无关

方法的重载:

在同一类中,定义了多个同名的方法,这些同名的方法具有同种功能
每个方法具有不同参数类型或参数个数
同一个类中,方法名相同,参数不同的方法,与返回值无关
参数不同:个数不同、类型不同、顺序不同

public class MethodDemo5 {
    public static void main(String[] args) {
        method1((byte)5, (byte)6);
    }
    public static void method1(byte b1,byte b2) {
        System.out.println(b1 == b2);

    }
    public static void method1(short s1,short s2) {
        System.out.println(s1 == s2);
    }
    public static void method1(int i1,int i2) {
        System.out.println(i1 == i2);
    }
    public static void method1(long o1,long o2) {
        System.out.println(o1 == o2);
    }
}

练习:

复制数组:

public class MethodDemo6 {
    public static void main(String[] args) {
        //定义原始数组
        int[] arr = {1,2,3,4,5,6,7,8,9};
        //调用方法拷贝数据
        int [] copyArr = method1(arr,3,7);
        //遍历copyArr
        for (int i = 0; i < copyArr.length; i++) {
            System.out.print(copyArr[i] + " ");
        }

    }
    public static int[] method1(int [] arr,int from,int to) {
        //定义数组,动态初始化
        int [] newArr = new int[to-from];
        //复制数据
        //伪造索引的思想
        int index = 0;
        for (int i = from; i < to; i++) {
            newArr[index] = arr[i];
            index++;
        }
        return newArr;

    }
}

平方根应用
获取随机数
导包 – Random这个类在哪
import java.util.Random
创建对象
Random r = new Random () ;
上式中只有r是变量名,可以变,其他的都不允许变
接收数据
int number = r.nextInt(随机数范围);
上式中只有number是变量名,可以变,其他都不能变

import java.util.Random;
public class Demo2 {
    public static void main(String[] args) {
        Random r = new Random();
        int number = r.nextInt(9) + 7;// 7~15
        System.out.println(number);
    }
}

猜数字

import java.util.Random;
import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        Random r = new Random();
        int number = r.nextInt(100) + 1;// 1~100
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("Enter a number: ");
            int guessnumber = sc.nextInt();
            if(guessnumber > number) {
                System.out.println("大了");
               }else if(guessnumber > number) {
                System.out.println("小了");
            }else {
                System.out.println("Guess number is: " + guessnumber);
                System.out.println("You guessed correctly!");

                break;
        }

        }
    }
}

总结:

本周继续学习java数组和方法相关的基础语法,并进行了相关练习。
下周进行面向对象和管理系统的相关内容的学习。
本周主要问题是学习态度不够积极,学习效率较低,要合理规划时间进行有效学习。

标签:总结,arr,int,System,2024,暑假,println,public,out
From: https://www.cnblogs.com/haoyinuo/p/18327268

相关文章

  • 2024.7.22至2024.7.27周总结
    本周学习任务清单数据结构:树链剖分。解题思路:CDQ分治,整体二分。数论:费马小定理,素数筛法,欧拉定理,逆元,拓展欧几里得算法,中国剩余定理,Miller_Rabin素数检测,PollarRho分解质因数算法。多项式和生成函数:拉格朗日插值法,普通生成函数。线性代数:向量,线性组合,线性变换,线性,矩阵,行列......
  • 2024暑假集训测试13
    前言比赛链接。从来没见过交互题,T1狂CE不止心态炸了,后面的题也没打好,T2、T3简单题都不会了,所以为啥T4又放黑题。T1大众点评原题:AT_joisc2014_d。难点主要在交互,赛时琢磨了半场比赛终于搞明白是啥玩意儿了,可以将给定库当成压缩的一部分代码,可以调用里面的函数,输入......
  • 怎么判断电脑屏幕被监控?电脑被监控可以看到什么?丨2024超强科普!
    各位同仁,是不是正在怀疑自己的电脑被监控了?那么又该怎么盘点自己的电脑是不是正在被监控,假如真的被监控,老板又会看到什么内容呢?别急,且听我慢慢道来!一、电脑被监控的表现黑屏闪烁当电脑被监控时,屏幕可能会出现短暂的黑屏或频繁闪烁。这种情况多出现在电脑启动或打开特定程......
  • 7月总结
    ContestsUNIQUEVISIONProgrammingContest2024Summer(AtCoderBeginnerContest359)AtCoderBeginnerContest360ToyotaProgrammingContest2024#7(AtCoderBeginnerContest362)AtCoderBeginnerContest363CodeforcesRound959sponsoredbyNEAR(Div.......
  • P2024 [NOI2001] 食物链
    原题链接题解关系具有矢量特性,因此可以带权并查集维护code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intfa[50006];intval[50006];intfinds(intnow){if(now==fa[now])returnnow;inttem=fa[now];fa[now]=finds(fa[now])......
  • (超详细)备赛笔记2024年全国职业院校(中职组)技能大赛(ZZ052大数据应用与服务)第二套试题
    2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第02套【子任务一:基础环境准备】模块一:平台搭建与运维(一)任务一:大数据平台搭建1.子任务一:基础环境准备(1)对三台环境更新主机名,配置hosts文件,以node01作为时钟源并进行时间同步;#分别在不同主机上面执......
  • 随笔之甲辰年(2024)
    前言之所以用天干地支,大概是因为最近追《一人之下》,里面提到了“甲申之乱”。自己又年近不惑,突然感慨六十年一个甲子,俗话说“三十年河东,三十年河西”,也刚好六十年。估摸着我大概也许六十岁的时候,也会喜欢上这种颇具中国传统色彩的叫法,仅此而已辛未月(7月)壬辰日(27日)农历六月......
  • 暑假集训csp提高模拟9
    赛时rank15T10,T2100,T30,T40T1,T3都会做,然后都挂了。恼了,挂200,不愧是我,唐T1大众点评「JOISC2014Day1」拉面比较简单的交互。考虑选择相邻的两组,小的单独存一个,大的单独存一个,是比较200次再将大的互相比较,小的互相比较,各200次点此查看代码#include<bits/stdc++.......
  • 2024AGI面试官 常问的问题以及答案(附最新的AI大模型算法面试大厂必考100题 )
    前言在这个人工智能飞速发展的时代,AI大模型已经成为各行各业创新与变革的重要驱动力。从自动驾驶、医疗诊断到金融分析,AI大模型的应用场景日益广泛,为我们的生活带来了前所未有的便捷。作为一名程序员,了解并掌握AI大模型的相关知识,无疑将大大提升我们的竞争力。在这个充满......
  • 暑假集训CSP提高模拟9
    暑假集训CSP提高模拟9组题人:@Delov\(T1\)P161.大众点评\(0pts\)原题:JOISC2014Day1ラーメンの食べ比べ。思路来自1037-CSP2021提高级第一轮第5题。\(2n\)次比较是好做的。不难发现在这些比较是有多余的,考虑减少多余比较。将\(n\)座拉面馆两两......