程序员成长之旅(Day 8)

目录

学习目标:

学习内容:

Java 数组的定义

Java 数组的声明

 声明方式:

数组的初始化:

        动态初始化: 数据类型 [] 数组名称 = new 数据类型 [长度];

        静态初始化:在定义数组的同时设置元素的值。

        数组的默认初始化:

匿名数组

数组的优势与局限

LintCode刷题

·判断是否为完全数

·求小写字母个数

 ·求a的b次方

·break跳出循环

·打印素数 

·打印素数 

 ·计算某个人出生的天数

学习产出:


学习目标:

  • Java 数组的定义
  • Java 数组的声明
  • 数组的优势与局限
  • 数组的遍历访问(普通循环,增强for循环)
  • 数组元素的顺序查找
  • 数组元素的冒泡法排序
  • Arrays工具类的使用
  • 二维数组


学习内容:

Java 数组的定义

        数组是一组相同数据类型元素的集合。在Java中数组属于引用类型,即数组是一个对象。这里的数据类型不仅含八大基本数据类型,还包含引用数据类型,如数组里面可以存数组,数组里面可以存放字符串。

Java 数组的声明

 声明方式:

        1.数据类型 [] 数组名称 eg:int [] a;        //推荐,没有指向具体的一块堆内存

        2数据类型 数组名称 [] eg:int a [];

数组的初始化:

        动态初始化: 数据类型 [] 数组名称 = new 数据类型 [长度];

                int [] arr = new int [10];然后通过下标索引为每个元素赋值。

        静态初始化:在定义数组的同时设置元素的值。

                简化格式:
                        数据类型 [] 数组名称 = {值1,值2,…};
                完整格式:
                        数据类型 [] 数组名称 = new 数据类型 [] {值1,值2,…};

        数组的默认初始化:

                int[] arr=new int[2];        //数组的元素值这里被默认初始化为0

匿名数组

利用完整格式,可以方便使用匿名数组。匿名数组就是没有名称的数组,本质是一块没有栈内存指向的堆内存。只能使用一次,用完就被回收了。

public class Test
{
    public static void main(String[] args)
    {
        int[] arr = init();
        for(int i=0; i < arr.length;i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
     public static int[] init()
     {
         return new int[]{1,2,3,4,5};//方法返回一个匿名数组
     }
}

数组的优势与局限

        优点: 
                1、按照索引查询元素速度快 
                2、能存储大量数据 
                3、按照索引遍历数组方便

        缺点: 
                1、根据内容查找元素速度慢 
                2、数组的大小一经确定不能改变。 
                3、数组只能存储一种类型的数据 
                4、增加、删除元素效率慢 
                5、未封装任何方法,所有操作都需要用户自己定义。

LintCode刷题

·判断是否为完全数

        输入n后,从1开始向 n-1遍历,当可以被n整除时,那么就是n的因子,累加即可

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int compare=0;
        for (int i =1;i<n;i++){
            if (n%i==0){
                compare+=i;
            }
        }
        if (compare==n){
            System.out.println("is perfect number");
        }else
            System.out.println("not perfect number");
    }
}

·求小写字母个数

        用isLowerCase判断满足++即可,详情字符串中大小写变换

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.next();
        char[] chars=str.toCharArray();
        int lowerNumber=0;
        for (int i=0;i<chars.length;i++){
            if (Character.isLowerCase(chars[i])){
                lowerNumber++;
            }
        }
        System.out.println(lowerNumber);
    }
}

 ·求a的b次方

         运用Math.pow()即可,详情Math方法整理,注意返回类型是0.0

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a =scanner.nextInt();
        int b =scanner.nextInt();
        System.out.println((int)Math.pow(a,b));
    }
}

·break跳出循环

         break关键字的使用

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        for (int i = 1; i <= n; i++) {
           System.out.println(i); 
           if (i==m)break;
        }
    }
}

·打印素数 

·打印素数 

        在外面定义一个方法来判断传入的是不是素数,然后再由for循环遍历把是的输出即可 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        for (int i =2;i<=n;i++){
            if (isprime(i)){
                System.out.println(i);
            }
        }
    }
    public static boolean isprime(int number){
        if (number==2) { return true; }
        int n=0;
        for (int i=2;i<number;i++){
            if (number%i==0) n++;
        }
        return n==0;
    }
}

 ·计算某个人出生的天数

       定义一个输入格式,把按照输入格式输入的转换为两个日期,调用getTime()方法活得两个的时间,但是是毫秒的,在进行转换成天数后相减返回即可。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Solution {
    public long getTime(String birthday, String nowTime)
            throws ParseException {
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date date=simpleDateFormat.parse(birthday);
        long time1= date.getTime();
        Date date2=simpleDateFormat.parse(nowTime);
        long time2= date2.getTime();
        long time= (time2-time1)/1000/60/60/24;
        return time;
    }
}

 学习时间:

2021-8-16 9:00-10:30、15:28-17:33


学习产出:

刷题*6

学习博客*1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值