首页 > 代码库 > Java语法基础与数据类型
Java语法基础与数据类型
一、包
1、 package<top_pkg_name>[.<sub_pkg_mame>];
2、import导入包。可用“.* ”导入包中全部类。默认导入java.lang.*。
3、静态导入(Static Import):使用静态导入可以使被导入的所有静态变量和静态方法在当前类中直接可见,使用这些静态成员无需再给出他们的类名。
例如:
import static java.lang.Math.pow;public static void main(String[] args) { double d=pow(10,1);}
二、类、属性、构造器、成员方法的声明
类声明:
<作用域> class <类名>{
<属性声明>
<构造函数声明>
<方法声明>
}
方法:<方法作用域> <返回类型><方法名称>(<参数列表>){}
可变参数:(下面是一个关闭一个或多个流的函数)
public static void closeAll(Closeable... io){ for(Closeable temp:io){ try { if (null != temp) {
temp.close(); } } catch (Exception e) { }}
note:
1、构造方法与类名相同,没有返回值。构造方法也可以调用其他构造方法,用this实现,this的参数指明调用哪一个构造方法。
2、如果一个类没有构造器,那么虚拟机将自动给该类一个默认的构造器(无参构造)。如果在该类里面构造了带参数的构造器,那么虚拟机将提供默认构造方法,当然,也不能按照默认构造方式构建。
3、方法内的变量不能有static和访问权限(作用域)的关键字修饰,注意它们是局部变量。它们可以被final修饰。
三、运算符和优先级
乘除加减与数学算式中顺序的计算相同,有括号的优先计算
1、算术运算符与圆括号的优先级比较
由 高 到 低 | |||
() | +,—(正,负号) | *,/,% | +,-(加,减号) |
| 同级 | 同级 | 同级 |
| 单目运算符 | 双目运算符 |
2、关系运算:
优先级 | 优先级相同(高) | 优先级相同(低) | ||||
关系运算符 | > (大于) | >= (大于等于) | < (小于) | <= (小于等于) | == (等于) | != (不等于) |
3、逻辑运算符
优先级 | 高 低 | ||
逻辑运算符 | !(逻辑“非”) | &&(逻辑“与”) | ||(逻辑“或”) |
(1)同级运算看是“左结合”还是“右结合”,不同级看级的高低
(2)在关系运算符、算术运算符、赋值运算符、逻辑运算四者中,优先级从高到低依次为:!(逻辑“非”)、算术运算符、关系运算符、&&(与)、||(或)、赋值运算符
4、
位运算含义与功能
位运算符 | 含义和功能 | 优先级 |
~ | 按位求反 | 最高(单目) |
<< | 左移 | 1 |
>> | 右移 | 1 |
& | 按位与 | 2 |
^ | 按位异或 | 3 |
| | 按位或 | 最低 |
注意:按位求反运算符为单目运算符,优先级别最高,结合性自右向左;其他为双目运算符,结合性自左向右。位运算对象只能是整型或者字符型数据。
注意:i++和++i
int j=0;for(int i=1; i<10; i++){ j=j++;}System.out.println(j);
上面的结果为0。先执行赋值,再执行+操作,当循环进入第一次,j被进行+1操作,但最后又因为未赋值前的值为0被赋值给j,所以每次循环j的值都没有改变,因此打印值为0.
下面:
1 public static void main(String[] args) { 2 int i=3; 3 i=i++ + i++; System.out.println(i); 4 i=3; 5 i=i++ + (++i); System.out.println(i); 6 i=3; 7 i=++i + i++; System.out.println(i); 8 i=3; 9 i=++i + (++i); System.out.println(i);10 }
上面的结果为7, 8,8,9。
四、流程控制
if、else、switch、for、while、do、break、continue
注意项:
1、break借助标号可实现外层循环的中断(它可以不仅仅中断当前循环,标号为合法标识符)
例如:
public static void main(String[] args) { here: while(true){ for(int i=1; i<10; i++){ System.out.println(i); if(i==5) break here; } System.out.println("can‘t do"); } System.out.println("go to here");}
2、continue:结束当前循环,循环语句内continue后的语句将不再执行。
3、switch(表达式){case : break; default:}
1)、表达式的类型:(1)、可以自动转换为int的基本类型的数据:byte ,short,char,int(long、double、float、boolean不可以)。(2)、字符串。(3)、枚举类型
2)、穿透现象,如果没有break;将会继续执行下一个case语句。
3)、default,最后剩余的情况
五、数据类型:
基本数据类型
| 类型 | 位数 | 默认值 |
逻辑型 | Boolean | 1bit | false |
文本型 | Char | 16bit(2byte) | ‘\u0000‘ |
整数型 | Byte | 8bit(1byte) | 0 |
| short | 16bit(2byte) | 0 |
| int | 32bit(4byte) | 0 |
| long | 64bit(8byte) | 0 |
浮点型 | double | 64bit(8byte) | 0.0 |
| foalt | 32bit(8byte) | 0.0 |
注意bit、byte、‘\u0000‘是怎么回事:
1、1byte=8bit,1bit是1位二进制数,boolean的大小为1bit,也就是只储存0或1,对应着false或true。
2、‘\uxxxx‘中\是转义字符,u是Unicode,后面跟一个十六进制数,通过这个十六进制数来指定一个字符
note:
1、自动置入/自动取出(Autoboxing/unboxing)(自动装箱、拆箱):Java基本数据类型都有各自对应的包装类。
public static void main(String[] args) { Integer age=new Integer(20); Integer now=age+1;//引用类型于基本类型直接计算 System.out.println(now);}//Integer类构造器源码:public Integer(int value) { this.value =http://www.mamicode.com/ value;}
枚举类型
public enum Color{ Red,White,Blue;}for(Color c:Color.values()){ System.out.println(c);}
引用类型
引用可以理解为C中的指针,但不能像C语言那样计算指针。在使用引用变量之前,必须为他分配实际的存储空间,用关键字new实现。
数组类型
Java编程语言并没有提供多维数组,但可以创建数组的数组来实现多维数组。例如二维数组也可以这样定义
int a[][]=new int [3][4];int b[]={1,2,3,4};a[0]=b;
数组的for-each遍历
1 public static void main(String[] args) {2 int sum=0;3 int a[]={1,2,3,4,5};4 for(int i:a){5 sum+=i;6 }7 System.out.println(sum);8 }
集合类型
1、List:
LinkedList
ArrayList
2、Set:
HashSet
LinkedHashSet
3、Map
HashMap
SortedMap
关键字
this:指代当前对象。1、引用成员变量。可区分同名的局部变量。2、引用构造方法。必须是构造方法类的第一条可执行语句。
super:在子类对象内部直接指代其直接父类父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。继承构造时,只能是构造方法的第一条可执行语句,表示调用哪个构造方法。调用其属性不必是第一条语句。
static:用来声明成员属于类,而不是类的对象。static变量(类变量)可以被所有对象共享。可通过类名直接调用。静态变量(方法)的生命周期是整个程序。
final:修饰类,该类不能被继承(终态类,如String)。修饰方法,该方法不能被覆盖。修饰变量,该变量为常数。final维护着安全。
Java语法基础与数据类型