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
2020年4月的日历:
日 一 二 三 四 五 六
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
- 移码 //
1表示为正数,0表示为负数
CET4P154
urge
evolution
extraordinary
satellite
publication
debt
trim
urgent
myth
mud
relate
qualification