java必须会js么_Java和JS的那些不同

记得刚学JavaScript时,就听见有人说JavaScript和Java之间的关系就像是:巴基斯坦和卡巴斯基、面包和面包车,可以说两者除了语言名字上有点像以外,几乎毫无关系。其实为啥JavaScript叫这个名字,Nicholas C.Zakas大神在《JavaScript高级程序设计》的开篇中就有提到,起初JavaScript叫LiveScript,不过九几年那时候Java正火,为了赶波顺风车,于是LiveScript更名为JavaScript。

1. JavaScript是动态语言,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。JS是解释型语言,即在程序运行时把语言翻译成机器语言。

Java就是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。Java是编译型语言,即在程序运行前把语言翻译成机器语言。

2. JS中,单双引号没有区别,它们都用来表示字符串。

Java中,字符型(char)的值用单引号括起来,表示单个字符 char c = 'a';

字符串(String)的值用双引号括起来,表示一个或多个字符 String s = "abc";

String s = 'hello'; //Java报错

3. JS中,正则表达式用 / / 包起来

var str = "abc123"str= str.replace(/\d{3}/, ""); //注意replace方法不会对字符串本身做出改变

Java中,正则表达式用 " " 包起来

String str =“abc123”;

str= str.replaceAll("(.{2})(.{*})(.{2})", "$1***$3"); //注意replaceAll方法也不会改原字符串//Java替换字符串有两个常用的方法,replace()和replaceAll()//replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换//replaceAll的参数是regex,即基于规则表达式的替换

4. JS中有变量提升

Java中没有变量提升,但函数有提升。在public static void main 中,可以使用在其后声明的函数块,不可以使用在其后声明的变量

5. JS中的this不限制使用范围,使用时注意this的指向即可。JS中函数里的this指向的是window,生成实例后指向实例化后的对象。需要注意的是在ES6的箭头函数中不可以改变this绑定

functionStudent(name){this.name =name;

}

Student("kuro-p"); //直接调用,则创建全局变量name;如果已存在全局变量name,则更改全局变量name的值

var Tom = new Student("Tom"); //构造函数调用,创建对象属性name

console.log(Tom.name); //Tom

Java的入口函数public static void main中,不能调用this,this只能用在构造函数或方法里

在构造方法里的this指向当前对象

classStudent(){

String name="";publicstudent (String name){this.name = name; //这个this.name指的是class student里的变量name,需要在class中提前声明才能使用

}

}

5. 返回值问题

不管是JS还是Java都要注意方法的返回值是什么,拿Java举例来说,ArrayList.add()方法的返回值是布尔值,BigDecimal.add()方法并没有更改原数据。

6. 关于花括号"{ }"

在JS中,花括号可用来初始化一个对象,一种用键值对保存数据的数据类型

var person ={

name:"Kuro-P",

age:23}

在Java中,花括号中的代码是这个类在实例化之前所做的一些操作,可以看作是构造方法前的初始化方法

String[] fruits = { "apple", "pear", "banana" };

7. 循环

JS 和 Java 都可以用最基本的for循环来实现循环语句

for(var i=0: i

for(int i=0: i

对于普通的数组循环,二者都提供了更为便利的方法

JS可用 for..of...(注意兼容)

for(item in list){...}

Java用 for.. : ..

for(item : list){...}

8. 数组长度

在JS中,字符串和数组长度都可以用length属性获取

var name = 'Kuro-P';

console.log(name.length);//6

var arr = ['K', 'u', 'r', 'o', '-', 'P'];

console.log(arr.length);//6

在Java中,有长度访问三种方式分别对应三种情况 (

访问数组长度时,用 length 属性

访问String长度时,用 length() 方法

访问List等泛型集合长度时,用 size() 方法

public static voidmain(String[] args) {

String []list={"lHTML","CSS","JS"};

String name="Kuro-P";

List array=newArrayList();

array.add(name);

System.out.println(list.length);//3

System.out.println(name.length()); //6

System.out.println(array.size()); //1

}

9. 数据类型转换

JS中的基本数据类型中常需要操作的就是String和number

var number= 123;//number转换成String

number.toString(); //"123"

//String转换称number//若用 parseInt() 转换成含有非数字的字符串时,非数字部分要在数字部分的后面

parseInt("15px") //15

parseInt("px15") //NaN

//浮点数取整

parseInt(123.456) //123

parseInt(123.678) //123

//浮点数取整也可以用Math里的方法

Java中的强制类型转换,就要用到其包装类的方法

//String 转 Integer

Integer.parseInt( str )//或者 (int) 123 这样声明

//强制转换为Double同理

Double.parseDouble()

10. 日期类型的转换

JS中 Data to String 或者 String to Date 如下

var startDate = newDate(),

endDate = new Date(startDate + 24 * 60 * 60 * 1000 * 31); //对时间进行加减操作 +31 天

startDate.toLocalDateString();//"2018/7/23" 高版本的Chrome和Safari 表现一致,但鉴于有不同版本浏览器表现不一致的情况,谨慎使用

startDate.getFullYear();//2018

startDate.getMonth() + 1; //7

startDate.getDate(); //23

//同时也可以set时间

startDate.setFullYear(2017);

startDate.setMonth(6);

startDate.setDate(28);

Java中常用的对Date操作的方法如下

//1. 对Date对象进行加减时间操作( 用calendar类 )

Date date = newDate();

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.YEAR,-1); //对时间进行处理

calendar.add(Calendar.MONTH, -1);

Date oldDate= calendar.getTime(); //return Date//2. 将字符串转化为Date( 用SimpleDateFormat类 )

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); //大小写含义不同,不可随意使用

String today = "2018/7/23";try{

Date todayDate=simpleDateFormat.parse(today);

}catch(ParseException e) {

System.out.println(e);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值