声明变量
基本数据类型
js:
var /let /const 变量名 = 变量值
//变量提升
var a;
//es6 let可修改,const不可修改
let age = 1;
//存储一个小数类型的体重
const weight=1.22;
const gender=1;
const marry = true;
const gender='男';
let a,b,c;
let s1 = Symbol()
let s2 = Symbol('another symbol')
let s3 = Symbol('another symbol')
s1 === s2 // false
s2 === s3 // false
java:
数据类型 变量名 = 变量值;
//只能写在方法体内
var a = 1;
//整数类型:byte、short、int、long存储一个整数类型的年龄
int age = 10;
byte b = 1;
short s = 200;
int i = 300;
long l = 400;
/*如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误*/
byte b2 = 200;
/*浮点类型存储小数,
*float单精度尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double双精度精度是64位,是float的两倍**/
//赋值时需要以"f"或"F"作为后缀。
float weight = 1.22f;
double weight = 1.22;
//字符类型:char存储一个单字符
char gender='男';
//布尔类型:boolean存储一个布尔类型
boolean marry = true;
//声明多个同类型的变量
int a,b,c; //表示a,b,c三个变量都是int类型。
总结使用上的感受、不同点
- java每一条语句必须分号结尾;js不用。
- js的基本数据类型number(数字)、string(字符串)、boolean(布尔)、null(空)、undefined(未定义)、symbol(符号)。
- java的基本数据类型。
- 整数类型:byte、short、int、long
- 浮点类型:float、double
- 字符类型:char
- 布尔类型:boolean
- String是java引用类型、js是基本数据类型。
- java使用一对""来表示一个字符串,内部可以包含0个、1个或多个字符。''表示char类型(单字符)。而js用""和''都表示字符串,
- java中任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型(与js相同)、其他类型简拼接需要注意自动类型提升;
- java是静态类型(整数可以自动类型提升、强制转换)其他不允许强制转换、js是动态类型。
自动类型提升
强制类型转换
数据类型1 变量名 = (数据类型1)被强转数据值; //()中的数据类型必须<=变量值的数据类型
String类型不能通过强制类型()转换,转为其他的类型
关于运算符的不同
js:
- if(a===b)//类型,值均相同
- if(a==b)//是要先先进行类型转换后,才能做比较
- 逻辑运算符只有&& || !三种
java:
- if(a==b)//只比较值。类型不同、无法比较
-
逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。
-
运算符说明:
-
& 和 &&:表示"且"关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。
-
| 和 || :表示"或"关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false
-
! :表示"非"关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。
-
^ :当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。
- 理解:
异或,追求的是“异”!
- 理解:
-
-
逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6 。
-
区分“&”和“&&”:
- 相同点:如果符号左边是true,则二者都执行符号右边的操作
- 不同点:& : 如果符号左边是false,则继续执行符号右边的操作
&& :如果符号左边是false,则不再继续执行符号右边的操作
- 建议:开发中,推荐使用 &&
-
区分“|”和“||”:
-
相同点:如果符号左边是false,则二者都执行符号右边的操作
-
不同点:| : 如果符号左边是true,则继续执行符号右边的操作
|| :如果符号左边是true,则不再继续执行符号右边的操作
-
建议:开发中,推荐使用||
关于打印的不同
js: 使用console.log("","")向控制台输出数据 (逗号隔开打印多个)
java: 使用System.out.println() 向控制台输出数据。不能使用逗号隔开打印,打印多个需用+拼接 System.out.print()不换行输出
引用数据类型
数组
js
var /let /const 变量名 = [元素1,元素2];
//一维数组
const arr= [1,2,3,4,5]
//二维数组
const arr = [[1,2,3],[1,2,3]]
java
1.静态初始化
数据类型[] 变量名 =new 数据类型[长度];
int[] arr = new int[]{1,2,3,4,5};
2.动态初始化
数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
int[] arr = new int[5];
二维数组 静态初始化
元素的数据类型[][] 二维数组的名称;
int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
动态初始化
元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n];
//其中,m:表示这个二维数组有多少个一维数组。或者说一共二维表有几行
//其中,n:表示每一个一维数组的元素有多少个。或者说每一行共有一个单元格
int[][] arr = new int[3][2];
注意
- java中数组有定长特性,长度一旦指定,不可更改
- js的数组方法直接在原型链上调用:arr.方法名()
- java的数组方法只能在工具类里面java.util.Arrays
package com.atguigu5.arrays;
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
//1. boolean equals(int[] a,int[] b):比较两个数组的元素是否依次相等
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[]{1,2,3,4,5};
arr2 = new int[]{1,2,3,5,4};
System.out.println(arr1 == arr2);
boolean isEquals = Arrays.equals(arr1,arr2);
System.out.println(isEquals);//true ---> false
//2. String toString(int[] a):输出数组元素信息。
System.out.println(arr1); //[I@776ec8df
System.out.println(Arrays.toString(arr1));
//3.void fill(int[] a,int val):将指定值填充到数组之中。
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
//4. void sort(int[] a):使用快速排序算法实现的排序
int[] arr3 = new int[]{34,54,3,2,65,7,34,5,76,34,67};
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3));
//5. int binarySearch(int[] a,int key):二分查找
//使用前提:当前数组必须是有序的
int index = Arrays.binarySearch(arr3,15);
if(index >= 0){
System.out.println("找到了,索引位置为:" + index);
}else{
System.out.println("未找到");
}
}
}