码迷,mamicode.com
首页 > 编程语言 > 详细

二、java语法基础

时间:2015-07-25 22:57:11      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:

这里提几个个人感觉需要注意的细节,具体的内容推荐随便看本java书籍

一、标识符

1.标识符命名规则:
1)字母、下划线、美元符号或者数字组成
2)字母、下划线、美元符号开头(不能是数字)(面试喜欢考这两点)
3)大小写敏感,长度无限制
4)不能和关键字、保留字重名
2.约定一般采用驼峰规则,并且是见名知意
3.注意命名不能够有关键字 所有关键字,都是小写字母

 

二、基本数据类型

byte,short ,int,long,char;  boolean ;float,double 

需要注意的是:

1)整型默认使用int, 浮点型默认使用double

比如要写一个长整形long 的数,需要显式地写成 1000L (后面加个L,虽然写小写l也可以,但是推荐写大写L) 

要写一个float类型的浮点数,显式写成 1.23F

2)关于金融的行业对于数据精度要求很高的,一般会使用BigInteger和BigDecimal来表示整型和浮点型

3)char类型

java中的char底层采用unicode,英文是两个字节16位,一个汉字也是两个字节,也就是说 ‘a‘ ,‘中‘ ,对于java中的char来说是一样长的 
(虽然有些编码里面说的一个中文字符是两个英文字符长度,但是在unicode下面,他们长度相同,都是两个字节)

 

三、操作符

1.赋值 = , 注意的是引用类型传递地址,基本类型传递值。

2.算术运算符:+、-、*、/、%等

注意的是进行整型运算底层采用的是int来进行, 比如

short  s1,s2 = 1;

s2++;  

s1=s2;//这里会报错,因为s++的时候,会自动将short类型转为int类型,然后赋值的时候左边卫short类型,右边实际上变成了int类型

3.关系运算符

注意对象的比较,不能随便用"=",而且说到"="就不得不提"equals",这里提两点

1)

 1 public class A {}
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6 
 7            A a1 = new A();
 8 
 9          A a2 = new A();
10  
11            System.out.println(a1 == a2);     //false
12 
13            System.out.println(a1.equals(a2));//false  
14 
15     }
16 
17 }

第一个为false,因为比较的实际上是地址,两个对象,地址不同

第二个也为false,可能你已经了解对象比较要用equals方法,但是这里A对象并没重写equals方法,那么就会调用Object的equals方法,Object的equals方法实际上还是在比较地址   

2)

 1 public class Test {
 2 
 3     public static void main(String[] args ) {
 4 
 5        String s1 = "hello";
 6 
 7      String s2 = "hello";
 8 
 9       System.out.println(s1 == s2);      //true
10 
11       System.out.println(s1.equals(s2));//true
12 
13     }
14 
15 }

String虽然是对象类型,但是它很特殊,java里面有String池,创建第一个hello的时候放入String池,第二次创建s2的时候JVM首先去找String池,发现已经有"hello"了,就直接让s2也指向s1这个对象。

如果想创建另一个"hello",需要这么写:new String("hello");

(关于设计String池,原因之一也是java最开始出的版本里面,String就是常量,这是JVM为了效率考虑的一次优化,后面详细介绍String的时候还会讲到StringBuilder,StringBuffer,它们则是java对于字符串操作的第二次优化)

4.逻辑运算符  &, | ,! 注意两点

1)a&&b 如果前一个为false ,则后一个不会执行;如果a||b ,第一个为true,第二个不会执行了;
而a & b 第一个为false,第二个也会执行;a|b 第一个为true,第二个也会执行。(这面试挺喜欢考的)

2)熟悉二进制操作的话

比如 01 &  11  结果为 01 , 01 | 11 结果为11 , 这里是按照与或非的原则,每个位置进行计算的。现实中碰到要这么做的情况很少。这是按位操作。

3)指数计算

1.39E9f = 1.39*10^9  用的比较少

4)移位操作(需要点二进制的知识来理解)

左移 <<
右移 >>
无符号右移 >>> 用的比较少,一般只是在进行2的倍数操作时候用
而且移位操作,short,byte等执行之前,系统会自动转换成为int ,然后再移位
比较推荐的一种用法,就是当放大2的n次方的时候 ,可以 t<<n 这么写 , 左移一位相当于乘以2 ,右移一位相当于除以2 , 这个操作速度更快(这是装B利器)。

5)三元操作符

a?b:c

如果a为true则执行b,a为false执行c

6)截取
Math.random() 四舍五入
Math.ceil() 升截
Math.floor() 降截

7)基本数据类型之间的自动转换

容量小的自动转换成为容量大的
布尔类型和其他类型之间不能互相转换(这个和c++不同,比如 if(1)在c++中可以,在java中不行)
byte,short,char>int>long>float>double
byte,short,char之间不会相互转化,他们三者发生计算,首先变成int
(整型运算,底层就是以int,所以小容量的这三个进行运算,在运算前,就被系统自动变为int)

 

四、控制流程语句

1.循环

while,do-while,for , 注意do-while循环会比while多执行一次(这个面试常考)

比如:

 1 public class Test {
 2     public static void main(String[] args) {
 3         int i=0;
 4         while(i<2) {//执行2次
 5             i++;
 6             System.out.println("dd");
 7         }
 8         
 9         int j=0;
10         do {//执行3次
11             j++;
12             System.out.println("dd");
13         }while(j<2);
14     }
15 }

2.谨记一个原则,别过多使用if、else, 超过5个加注释(为更好维护)

3.switch语句 ,这个记得加break控制

虽然jdk版本出来都快版本9了,但是关于switch的和枚举配合使用的貌似使用不普遍,见下例:

 1 enum Spe {
 2     NOT,YES
 3 }
 4 
 5 public class Test {
 6     public static void main(String[]args) {
 7         Spe s = Spe.NOT;//枚举类型的值,本身也是这个枚举类型
 8         switch(s) {//s的位置放入一个枚举类型
 9             case NOT: System.out.println("not");break;
10             case YES: System.out.println("yes");break;
11         }
12     }
13 }

 

二、java语法基础

标签:

原文地址:http://www.cnblogs.com/kaiguoguo/p/4676701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!