JavaScript数组迭代/Java时间和日期/计算机中数据表示及运算

JavaScript数组迭代

什么数组迭代
数组迭代是用数组的方法对每个数组项进行操作

数组迭代方法

  • Array.forEach() //让数组元素都调用一次函数,该函数有3个参数选填分别是项目值,项目索引,数组本身
<script type="text/javascript">
			var text = "";
			var numbers = [28,45,67,98,67];	
			numbers.forEach(myFunction);
			document.getElementById('demo').innerHTML = text
			function myFunction(value){
				text = text + value + "<br>";
			}
		</script>
  • Array.map() //通过对一个数组进行函数操作后返回一个新数组,它不会改变原来数组,不会操作空元素
<script type="text/javascript">
			var numbers = [28,45,67,98,67];	
			var unmbers2 = numbers.map(myFunction)
			document.getElementById('demo').innerHTML = unmbers2.toString()	//输出数组字符串
			function myFunction(value){
				return value*2	//将原来数组元素值*2
			}
		</script>
  • Array.filter() //filter是过滤的意思,所以通过函数设定的条件返回一个新数组
<script type="text/javascript">
			var numbers = [28,45,67,98,67];	
			var unmbers2 = numbers.filter(myFunction)
			document.getElementById('demo').innerHTML = unmbers2.toString()	//输出数组字符串
			function myFunction(value){
				return value > 45	//将原来数组元素值大于45的过滤后返回新数组
			}
		</script>
  • Array.reduce() //相当于求数组里的全部元素的和,4个参数,总数,项目值,项目索引,数组本身
var numbers = [28,45,67,98,67];	
			var unmbers2 = numbers.reduce(myFunction)
			document.getElementById('demo').innerHTML = unmbers2	//返回305
			function myFunction(total,value){
				return total + value	//将数组的元素求和后返回一个值
			}
		</script>
  • Array.every() //判断数组的每个元素是否通过测试并返回布尔值
<script type="text/javascript">
			var numbers = [1,2,3,4,5];	
			var unmbers2 = numbers.every(myFunction)
			document.getElementById('demo').innerHTML = unmbers2	//输出false
			function myFunction(value){
				return value > 2	//判断数组的所有元素是否都大于2
			}
		</script>
  • Array.some() //判断数组中是否存在某些满足条件的元素
<script type="text/javascript">
			var numbers = [1,2,3,4,5];	
			var unmbers2 = numbers.some(myFunction)
			document.getElementById('demo').innerHTML = unmbers2	//输出true
			function myFunction(value){
				return value > 2	//判断数组的所有元素是否都大于2
			}
		</script>
  • Array.indexOf() //返回元素在数组中的索引位置,括号里面填具体元素(如果没有此元素就返回-1),允许有第二个参数(star)
  • Array.lastIndexOf() //从结尾开始检索,结尾为0,依次检索
  • Array.find() //返回通过测试的第一个元素
<script type="text/javascript">
			var numbers = [1,2,3,4,5];	
			var unmbers2 = numbers.find(myFunction)
			document.getElementById('demo').innerHTML = unmbers2	//输出3
			function myFunction(value){
				return value > 2	//返回第一个大于2的元素
			}
		</script>
  • Array.findIndex() //返回通过测试的第一个元素的索引值

Java时间和日期

Java有专门处理时间日期的类,他们都是final类

  • LocalDate
  • LocalDateTime
  • LocalTime

关于LocalDate类
封装的是年 月 日

        LocalDate date = LocalDate.now();	//返回当前的时间(用类名直接调用方法)
  • int getDayOfMonth() //返回当前月中的日
  • int gerMonthValue() //返回月的整数值
  • Month getMonth() //返回月的枚举值,因为Month是枚举类型
  • int getDayOfYear //返回当前年的第几日
  • DayOfWeek getDayOfWeek() //返回当前日期是星期几,以为DayOfWeek是枚举类型
  • int getYear() //返回年值
  • int lengthOfYear() //返回年的长度
  • int lengthOfMonth() //返回月的长度
  • boolean isLeapYear() //判断是否为闰年
  • LocalDate plusMonths(long monthsToAdd) //返回参数所增加月份的日期,同样有plusDays,plusYears
  • LocalDate of(year,month,day) //自定义日期

关于LocalDateTime类
封装了年月日时分秒

       LocalDateTime dateTime = LocalDateTime.now();	//返回当前年月日时分秒
  • int getHour()/getMinute()/getSecond()/getNano() //分别是返回时分秒和纳秒
  • LocalDateTime of(year,month,day,hour,minute,second,nano) //自定义日期和时间

关于LocalTime类
只封装了时间数据(时分秒和纳秒)

        LocalTime time = LocalTime.now();	//返回当前时间

关于日期和时间差,还有日历
LocalDate类,LocalDateTime类和LocalTime类都提供了计算时间差的方法

  • long until(Temporal endExclusive,TemporalUnit unit) //返回long类型,Temporal是一个接口,ChronoUnit实现了TemporalUnit接口,提供许多枚举常量
  • YEARS,MONTHS,DAYS,MINUTES,SECONDS,NANOS,WEEKS //ChronoUnit的枚举常量
        starDate.until(date, ChronoUnit.DAYS);  //返回starDate到date之间的天数

日历的制作实例

package Calender;

import java.time.DayOfWeek;
import java.time.LocalDate;

public class GiveCalender { //创建一个日历的类,用来获取是月份
    public LocalDate[] giveCalender(LocalDate date){    //用于的存放那一日是哪一月份
        date = date.withDayOfMonth(1);  //修改那一日为一号;
        int day = date.lengthOfMonth(); //获取那一天的那个月有多少日
        LocalDate dateArray[] = new LocalDate[day]; //创建那个月为一个数组
        for (int i = 0; i <day ; i++) {
            dateArray[i] = date.plusDays(i);    //将那个月的每一个存放到数组中
        }
        return dateArray;
    }
}
package Calender;

import jdk.dynalink.beans.StaticClass;

import java.time.DayOfWeek;
import java.time.LocalDate;

public class Application {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();   //创建一个日期对象
        GiveCalender giveCalender = new GiveCalender(); //创建获取月份的对象
        LocalDate dateArray  [] =giveCalender.giveCalender(date);   //将月份实体化
        printNameHead(date);
        for (int i = 0; i <dateArray.length ; i++) {
            if (i==0){  //确定一号是星期几然后输出多少个空格
                printSpace(dateArray[i].getDayOfWeek());
                System.out.printf("%4d",dateArray[i].getDayOfMonth());
            }
            else{
                System.out.printf("%4d",dateArray[i].getDayOfMonth());
            }
            if(dateArray[i].getDayOfWeek() == DayOfWeek.SATURDAY){  //如果那一天是星期六的话就换行
                System.out.println();
            }
        }

    }
    public static void printSpace(DayOfWeek x){ //根据1号是星期几输出多少空格的方法
        switch(x){
            case SUNDAY:printSpace(0);
            break;
            case MONDAY:printSpace(1);
            break;
            case TUESDAY:printSpace(2);
            break;
            case WEDNESDAY:printSpace(3);
            break;
            case THURSDAY:printSpace(4);
            break;
            case FRIDAY:printSpace(5);
            break;
            case SATURDAY:printSpace(6);
        }
    }
    public static void printSpace(int n){   //属于方法重载    一次输出多少个空格
        for (int i = 0; i <n; i++) {
            System.out.printf("%4s","");
        }
    }
    public static void printNameHead(LocalDate date){  //定义一个静态方法,在主类中调用,不能再主类中定义方法
        System.out.println(date.getYear()+"年"+date.getMonthValue()+"月的日历:");
        System.out.printf("%1s","");
        String name[] = {"日","一","二","三","四","五","六"};  //创建数组
        for (int i = 0; i <name.length ; i++) {
            System.out.printf("%3s",name[i]); //不换行输出
        }
        System.out.println();
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Calender.Application
20204月的日历:
   日  一  二   三  四  五  六
               1   2   3   4
   5   6   7   8   9  10  11
  12  13  14  15  16  17  18
  19  20  21  22  23  24  25
  26  27  28  29  30
进程已结束,退出代码 0

计算机中数据表示及运算

计算机中数据表示

1.数制及其转换
什么是进位进位计数制? 进位计数制就是按进位的方法进行计数,在进位计数制中,如果用r个基本字符来表示数值,那么就称为r进制.

  • 基数(K):最大进位数(也就是进制数)
  • 系数(m):每个位上的值(也就是把小数点左边作为0开始数起)
  • 位数(n):各进制数的位数(有多少个数字,就是多少位数)

r进制转换成十进制(D)

公式就是当前的在哪个位上的系数*r进制的(当前在哪个位置)次方+++

  • 二进制(B)
    10101(B) = 1*(2的4次方)+0*(2的3次方)+1*(2的2次方)+0*(2的1次方)+1*(2的0次方) =21

  • 八进制(O)

  • 十进制(D)

  • 十六进制(H)

十进制转成r进制

  • 整数部分: 除以r后取余,然后继续除以r,直到商为0,然后将所有的余数从右往左排列
  • 小数部分: 乘以r后取整,整数从左往右排列

八进制(O)和十六进制(H)转换成二进制(B)

  • 每个八进制对应二进制的3位 //144(O) = 001 100 100
  • 每个十六进制对应二进制的4位 //64(H) = 0110 0100

二进制(B)转八进制(O)和十六进制(H)

  • 整数部分从右往左分组
  • 小数部分从左往右分组
  • 八进制3个数字为一组,不足就补0
  • 十六进制4个数字为一组,不足就补0

二进制的运算规则

  • 加法: 1+1 =0 (有进位)
  • 减法: 0-1 =1(因为不够减,所以借1,当2)
  • 乘法:正常乘
  • 除法:乘法的逆运算

机器数和码制
什么是机器数?就是数据在计算机中的表现形式成为机器数,其采用的是二进制数,分为带符号和不带符号,0表示正数,1表示负数,通常符号位都是在二进制的最高位
什么是码制?码制就是为了方便机器数的运算,将带符号就机器数采用不同的编码方法,有以下4种,通常符号位都是在二进制的最高位

  1. 原码
  2. 反码 //正数和原码相同,负数除了符号位其他的数按位取反
  3. 补码 //正数和原码相同,负数除了符号位其他数按位取反后加1
  4. 移码 //1表示为正数,0表示为负数

CET4P154

urge
evolution
extraordinary
satellite
publication
debt
trim
urgent
myth
mud
relate
qualification

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值