遇见狂神说day08学Java

数组

1.相同类型数据的有序集合

2.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成

3.其中,每一个数据成为一个数组元素,每个数组元素可以通过下标来访问他们

在创建的数组中,int类型没有赋值则是0,string类型没有赋值则是null

最重要:数组的长度是确定的,数组也是一个对象,new出来的

声明数组、创建数组、初始化数组

声明数组时,是在栈中进行,且并没有进行数组的创建,如图所示外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数组的对象是在堆中,只要使用new关键词,都是在堆中的

public class Demo01 {
    public static void main(String[] args) {
        int[] nums;  //声明数组    这时,数组并不存在
        nums=new int[10];//定义数组
        nums[0]=1;
        nums[2]=2;
        nums[3]=3;
        int sum=0;
        //获取数组长度 array.length
        for (int i = 0; i < nums.length; i++) {
         sum+=nums[i];
        }
        System.out.println(sum);
    }
}
public class Demo02 {
    public static void main(String[] args) {
        //数组静态初始化   初始化+创建
        int[] nums={0,1,2,3,4,5};
        System.out.println(nums[0]);
        //数组动态初始化
        int[] b=new int[5];
        b[0]=3;
        b[1]=4;
        System.out.println(b[0]);
    }
}

注意数组下标越界异常,则会报错ArrayIndexOutOfBoundsException

数组的使用

public class Demo03 {
    public static void main(String[] args) {
        //打印所有的数组元素
        int[] nums={1,2,3,4,5};
        for (int i = 0; i < nums.length ; i++) {
            System.out.println(nums[i]);
        }
        //计算数组元素的和
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
            System.out.println("数组的和为"+sum);
        }
        //求最大值
        int max=nums[0];
        for (int i = 0; i < nums.length ; i++) {
            if(max<nums[i]){
                max=nums[i];
            }
        }
        System.out.println(max);
    }
}

增强型for循环

for(int:nums :num){}

二维数组

public class Demo05 {
    public static void main(String[] args) {
        //二维数组
        int[][] nums={{1,2},{3,4},{5,6}};
        for (int i = 0; i < nums.length ; i++) {
            for (int j = 0; j <nums[i].length; j++) {
                System.out.println(nums[i][j]);
            }
        }
    }
}

Arrays类

可以利用Arrays中的方法直接进行数组的输出、排序等操作

import java.util.Arrays;

public class Demo06 {
    public static void main(String[] args) {
        //Arrays类
        int[] nums={3,56,6,54,77,344,7778};
        //打印数组Arrays.toString
        System.out.println(Arrays.toString(nums));
        printArray(nums);
        //排列数组:升序Arrays.sort();
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums)) ;
    }

    //用常规方法自己打印
    public static void printArray(int[] nums)
    {
        for (int i = 0; i < nums.length; i++) {
            if (i==0){
                System.out.print("["+nums[0]);
            }
            if(i== nums.length-1){
                System.out.println("]");
            }else{
                System.out.print(","+nums[i+1]);
            }
            System.out.print("");
        }
    }
}

冒泡排序

此为嵌套循环,时间复杂度为o(n的平方)

public class Demo07 {
    public static void main(String[] args) {
        int[] a={4,5,323,33212556,7889,4343,323};
        int[] nums=sort(a);
        System.out.println(Arrays.toString(nums));
    }

    public static int[] sort(int[] num)
    {
        //需要;两层循环嵌套,一层是需要循环几次,一层是两个数进行交换
        int temp=0;
        boolean flag=false;
        for (int i = 0; i < num.length-1 ; i++) {
            for (int j = 0; j < num.length-1-i; j++) {
                if(num[j]>num[j+1]){
                    temp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=temp;
                    flag=true;
                }
                else {
                    flag=false;
                }
            }
        }
        return num;
    }
}

稀疏数组

注:本小节中的增强for循环输出二维数组,很方便

public class Demo09 {
    public static void main(String[] args) {
        //创建矩阵
        int[][] array1=new int[11][11];
        array1[1][2]=1;
        array1[2][3]=2;
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        //创建稀疏矩阵
        int sum=0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("矩阵有效值为"+sum);
        int[][] array2=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        int count=0;
        for (int i = 0; i <11 ; i++) {
            for (int j = 0; j <11; j++) {
                if(array1[i][j]!=0){
                    count++;
                    array2[count][0]=i;
                    array2[count][1]=j;
                    array2[count][2]=array1[i][j];
                }
            }

        }
        for (int[] ints : array2) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        //还原稀疏矩阵
        System.out.println("还原稀疏矩阵");
        int[][] array3=new int[11][11];
        for (int i = 1; i < array2.length; i++) {
                array3[array2[i][0]][array2[i][1]]=array2[i][2];
            }
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Security是一个用于进行身份验证和授权的开源框架。它提供了一套安全性的配置,可以轻松地集成到Spring应用程序中。 “狂神”是一个知识共享的平台,提供了许多技术方面的习资源,包括Spring Security。 当遇到狂神提供的Spring Security素材时,我们可以通过习这些素材来掌握Spring Security的相关知识和应用。 首先,我们可以了解Spring Security的基本概念和原理。通过狂神的素材,我们可以了解到Spring Security的核心功能是如何进行用户认证和授权的。 其次,我们可以习如何在Spring应用程序中配置和使用Spring Security。素材会介绍如何在项目中添加相关依赖和配置文件,如何编写自定义的用户认证逻辑以及如何实现细粒度的访问控制。 此外,素材还可能提供一些实际应用场景的示例代码和最佳实践,帮助我们更好地理解和应用Spring Security。 总之,通过狂神提供的Spring Security素材,我们可以更好地掌握和应用这个开源框架,提升我们在Web应用程序中的安全性。 ### 回答2: springsecurity是一个用于在Java应用程序中管理和控制用户身份验证、授权和安全的框架。它提供了一套完整的安全性解决方案,可确保应用程序的访问控制和数据保护。这个框架非常流行,广泛应用于各种类型的Web应用程序和企业级应用程序中。 而狂神是一个知名的在线教育平台,专注于技术领域的教和分享。在狂神平台上,有大量的技术教程和习资源,包括与Spring Security相关的教程。 当使用springsecurity时,我们可以参考狂神平台上的教程与素材。这些素材通常包括基本介绍、详细的配置步骤、示例代码和实践项目,能够帮助我们快速上手和理解springsecurity的使用。 通过狂神平台上的教程,我们可以习到springsecurity的核心概念和原理,了解如何配置和定制不同的安全机制,包括认证(Authentication)、授权(Authorization)、密码加密、会话管理和记住我功能等。同时,也能够习到如何处理常见的安全问题,如用户登录、注销、访问控制、角色权限等。 狂神的教程以通俗易懂的方式进行讲解,配备详细的实例代码和演示项目,帮助我们更好地理解和应用springsecurity。通过习这些教程,我们可以快速入门springsecurity,并在实际项目中应用它来保护应用程序的安全性。 简而言之,springsecurity遇见狂神,我们可以通过狂神平台上的教程和素材来习和应用springsecurity,提升应用程序的安全性。 ### 回答3: Spring Security是一个开源的安全框架,用于为Java应用程序提供身份验证、授权和安全性管理等功能。它是基于Spring框架的,可以与Spring框架无缝集成,简化开发人员在应用程序中实现安全性的工作。 狂神是一个非常受欢迎的在线教育平台,提供高质量的Java、Spring等技术教程。在狂神上,我们可以找到关于Spring Security的详细教程和实例代码,这些素材非常有助于习和理解Spring Security的用法和实现原理。 通过狂神的素材,我们可以了解Spring Security的基本概念和核心组件,如UserDetailsService、AuthenticationManager和AccessDecisionManager等。同时,狂神还提供了涵盖各种场景和功能的实例代码,例如基于表单登录、使用数据库进行身份验证和授权管理等。 通过狂神上的Spring Security素材,我们可以了解到如何配置Spring Security,在应用程序中实现用户认证和权限控制。我们可以到如何定义自定义的用户身份验证逻辑和用户权限管理策略,以及如何使用Spring Security提供的各种特性来保护我们的应用程序免受各种安全威胁。 总之,通过狂神的Spring Security素材,我们能够以系统化和全面的方式习和掌握Spring Security的相关知识和技能,从而能够更好地保护我们的应用程序的安全性,并提供优质的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值