Java和JavaScript的区别
- Java是一种面向对象的编程语言,语法比较严格。Java需要在代码中声明数据类型,例如“int”、“float”、“double”等。Java的语法是静态类型检查的,即编译器在编译时检查代码的语法和类型。Java的代码需要被编译成字节码才能被JVM(Java虚拟机)执行。
- JavaScript则是一种脚本语言,语法相对宽松。JavaScript的数据类型可以自动转换,不需要在代码中声明数据类型。JavaScript的代码是动态类型检查的,即在代码运行时才进行类型检查。JavaScript的代码可以直接在浏览器上运行,不需要编译成字节码。
特点 | Java | JavaScript |
---|---|---|
面向对象 | 面向对象编程语言 | 基于对象,不完全面向过程。有部分面向对象的特点 |
运行方式 | 编译型语言,生成中间文件, 不会生成中间文件字节码解释型,解释一部分,再运行一部分。 | 不会再生成中间文件 |
跨平台 | 安装虚拟机跨平台 | 运行在浏览器中,只要系统有浏览器就可以运行。 |
数据类型 | 强类型语言,不同的数据 | 弱类型,同一个变量可以赋值不同的数据类型。类型严格区分 |
大小写 | 区分大小写 | 区分大小写 |
字符与字符串区别
1. Java中单引号只能表示单个字符且不能为空
char val = 'a'; √
char val = '好'; √
char val = '你好'; ×
char val = 'aa'; ×
char val = '' ×;
2. Java中双引号表示字符串
char val = "a"; √
char val = "好"; √
char val = "你好"; √
char val = "aa" √
char val = "" √
3. JavaScript中单引号和双引号是一样的,表示字符串,建议使用单引号,都可以给空字符串
let val = 'a' √
let val = '好'; √
let val = '你好'; √
let val = 'aa' √
let val = '' √
let val = "a"; √
let val = "好"; √
let val = "你好"; √
let val = "aa" √
let val = "" √
变量
Java中变量有明确的类型(byte1,short2,int4,long8,float4,double8,char2,boolean1)
Java变量在使用之前必须声明类型,而JavaScript不需要。
1. byte
// 取值范围 -128~127
byte val1 = 10; √
byte val1 = 130; ×
byte val1 = (byte) 130; √ // val取值很有意思,建议自己多测试几个数值 就理解了
byte val1 = 10.1; ×
byte val1 = (byte) 10.1; √ // val取值为10
2. short
// 取值范围 -32768~32767
short val2 = 20; √
3. int
// 取值范围 -2147483648~2147483647
int val3 = 30; √
4. long
// 在数值的后边需要添加一个L,可以大写,也可以小写,建议大写
// 取值范围 -9223372036854774808~9223372036854774807
long val4 = 9999999999L; √
long val4 = 9999999999; × // Integer number too large
5. float
// 在数值的后边需要添加一个F,可以大写,也可以小写,建议大写
// 取值范围 -3.402823466×10的38次方到3.402823466×10的38次方
// float的精度为7~8位有效数字,7位肯定能保证,8位的值也存在。
float val5 = 99.99F; √
float val5 = 99.99; // 左侧是float,右侧默认是double,会提示类型错误
6. double
// 取值范围 1.797693e+308~4.9000000e-324(e+308 :乘以10的308次方,e-324:乘以10的负324次方)
// float和double的精确度是按照整体位数来的,并不是只是考虑小数部分
// double的精度为16~17位有效数字
double val6 = 999.99; √
7. boolean
boolean val8 = true; √
boolean val = 1; ×
8. JavaScript中变量则是动态类型, 从定义上来说let = val = const,定义后使用上会有不同
JavaScript五种数据类型
- number 数值型
- boolean 布尔类型:true/false
- string 字符串,没有字符类型
- object 对象类型:内置对象,自定义对象
- undefined 未定义的类型,没有赋初值,不知道是什么类型
let val = 100;√
let val = 100.1; √
let val = 99999999999999999; √
let val = true; √
let val = '你好!'; √
let val = 'a'; √
声明和赋值变量
1. JavaScript声明和赋值变量
let val = "你好";
2. Java声明和赋值变量
String var = “你好”;
数组
- Java在定义了一个数组的长度以后就不能再改变了
- 数组只能存储相同类型的元素
- 不能直观看见整个数组数据,只能遍历出来
1. Java数组第一种定义方式
int a[] = new int[2]; // 默认为0,如果是引用数据类型就为null
for (int i = 0; i < a.length; i++) {
System.out.println("【数组第一种定义方式】数据:" + a[i]);
// 输出结果
// 【数组第一种定义方式】数据:0
// 【数组第一种定义方式】数据:0
}
// 给数组赋值
a[0] = 10;
for (int i = 0; i < a.length; i++) {
System.out.println("【数组第一种定义方式】给数组赋值:" + a[i]);
// 输出结果
// 【数组第一种定义方式】给数组赋值:10
// 【数组第一种定义方式】给数组赋值:0
}
2. Java数组第二种定义方式
int b[] = new int[] {1,2,3,4,5};
3. Java数组第三种定义方式
int c[] = {1,2,3,4,5};
for (int i = 0; i < c.length; i++) {
System.out.println("【数组第三种定义方式】数据:" + c[i]);
// 输出结果
// 【数组第三种定义方式】数据:1
// 【数组第三种定义方式】数据:2
// 【数组第三种定义方式】数据:3
// 【数组第三种定义方式】数据:4
// 【数组第三种定义方式】数据:5
}
4. JavaScript定义方式
// 隐式创建
var arr = [值1,值2,值3];
//直接实例化
var arr = new Array(值1,值2,值3);
// 创建数组并指定长度
var arr = new Array(size);
集合
- Java集合的长度是可变的
- 集合可以存储不同类型的元素
- 集合是一种接口类型,它有许多实现类,例如ArrayList、LinkedList、HashSet、TreeSet等
- 用集合来存储整数、浮点数、字符、字符串等,声明的一个集合,不能同时存储多种类型的数据。例如声明一个存储字符串的集合
- 数组的访问速度比集合快,因为数组中的元素是连续存储的,而集合中的元素是分散存储的
1. 集合第一种定义方式; 使用ArrayList类创建List对象
List<String> arrayList = new ArrayList<String>();
// 添加元素 **.add(); **.addAll()
arrayList.add("apple"); // 列表的末尾添加string类型数据
arrayList.add(String.valueOf(true)); // 把boolean类型转成String
arrayList.add(String.valueOf(123)); // 把int类型转成String
Collections.addAll(arrayList,"Collections.addAll添加第一个","Collections.addAll添加第二个"); // 添加多个
arrayList.addAll(0, arrayList); // 添加一个集合进来,两个集合会合并成一个
for (String s : arrayList) {
System.out.println("【集合第一种定义方式】数据:" + s);
}
// 数组大小 size()
System.out.println("【集合第一种定义方式】数组大小:" + arrayList.size()); // 获取集合中的第1个元素; 结果是:【集合第一种定义方式】查询元素:10
// 查询元素 get()
System.out.println("【集合第一种定义方式】查询元素:" + arrayList.get(0)); // 获取集合中的第1个元素; 结果是:【集合第一种定义方式】查询元素:apple
System.out.println("【集合第一种定义方式】查询元素:" + arrayList.indexOf("apple")); // 查找元素"apple"第一次出现的位置。; 结果是:【集合第一种定义方式】查询元素:0
// 修改元素 set()
arrayList.set(0, "a");
System.out.println("【集合第一种定义方式】修改元素:" + arrayList.get(0)); // 【集合第一种定义方式】修改元素:a
// 删除元素 remove() removeAll() retainAll()
arrayList.remove("apple"); // 删除List中第一个出现的指定元素;
arrayList.removeAll(arrayList); // 删除List中包含在指定集合中的所有元素;
arrayList.retainAll(arrayList); // 仅保留List中包含在指定集合中的元素;
2. 集合第二种定义方式; 使用LinkedList类创建List对象
List<String> linkList = new LinkedList <String>();
3. 集合第三种定义方式; 创建不可变List对象
List<String> asList = Arrays.asList("a", "b", "c");
4. 集合第四种定义方式; 使用Collections类创建只读List对象
List<String> list4 = Collections.unmodifiableList(Arrays.asList("a", "b", "c"));
5. 集合第五种定义方式; 使用Vector类创建List对象
Vector是List接口的另一个实现类,与ArrayList类似,但是它是线程安全的。Vector的操作方法与ArrayList相同,但是由于线程同步的额外开销,它的性能可能较低。
List<String> list5 = new Vector<>();
6. JavaScript集合
JavaScript有是有集合这个东西,但是根本没用过。
JavaScript中的HTMLCollection对象是类数组的HTML元素列表(集合)。getElementsByTagName()方法返回HTMLCollection对象。
<!DOCTYPE html>
<html>
<body>
<p>Hello!</p>
<p>Hello World!</p>
<p id="demo"></p>
<script>
var myCollection = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML = "你看看吧,有 " + myCollection.length + " 条内容";
</script>
</body>
</html>
// 输出结果
// Hello!
// Hello World!
// 你看看吧,有 3 条内容
打印/记录/输出内容
1. JavaScript打印/记录/输出内容
console.log(“快看控制台”);
2. Java打印/记录/输出内容
System.out.println(“快看控制台”);
方法
1. Java声明、调用和打印函数/方法的返回值
在Java中,每个方法都需要在一个类内部声明(在上面的示例中,类为Main)。每个方法的参数都需要有一个数据类型。如果方法返回值,您需要指定返回值的数据类型(void表示不返回任何内容)。每个方法都必须在main方法内部调用(Java编译器在执行任何其他代码之前,将寻找main方法)。
public class Main {
static boolean isEven(int num) {
// 对num进行一些操作并返回结果
return (num % 2 == 0) ? true : false;
}
public static void main(String[] args) {
System.out.println(isEven(4));
}
}
2. JavaScript声明、调用和打印函数/方法的返回值
const isEven = (num) => {
// 对num进行一些操作并返回结果
return (num % 2 === 0) ? true : false;
};
console.log(isEven(4));