Java基础语法
1.注释
一般分为三类:
- 单行注释
- 多行注释
- 文档注释
其中,单行注释与多行注释同C/C++(单行用// 多行用/* */)
唯一不同的是文档注释。
文档注释是是针对整个方法或者整个类做一个简要的概述,一般加在类或者方法前面。代码为:
/**
*@author 作者名
*@version 版本号
*@since 指明需要使用的最早的jdk版本
*@param 参数名
*@return 返回值情况
*@throw 异常抛出情况
……
*/
使用文档注释后,利用javadoc命令就可以自己生成API文档(网页)。
由于javadoc功能较多,且平常练习不会经常使用,在这里暂时不做过多解释,等有机会学完这部分再重新系统的整理一下。目前还是比较懵(雾。
2.关键字与标识符
与C语言相通,Java中也有一部分保留字,如下图:
另外,Java的所有组成部分都要有名字,变量名、类名、方法名都被称为标识符。
要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始。
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合。
- 关键字不能用作标识符。
- 标识符区分大小写。
以上同C语言相比,多了美元符($)。它可以用在开头的位置,也可以插在中间。
3.数据类型
同C、C++,Java也属于强类型语言。所有变量必须先定义后使用。并且一旦定义之后,除非强制类型转换,否则数据类型不会再改变。强类型语言的优点是安全性高,但速度较慢。
与其相对的是弱类型语言,如:JavaScript、Python等,弱类型语言变量可以不用遵守严格的规定,其定义速度较快,但安全性比不上强类型语言。
Java数据类型分为基本类型和引用类型。
基本类型
- 数值类型
- 整数类型
- byte(一个字节):(-27~27-1)
- short(两个字节):(-215~215-1)
- int(四个字节):(-231~231-1)
- long(八个字节):(-263~263-1)
- 浮点类型
- float(四个字节)
- double(八个字节)
- 字符类型
- char(两个字节)
- 整数类型
- 布尔类型(一位):真(true)或假(false)
注意:
- 和C语言相比多了个更小的数据类型byte要注意。
- long类型在定义时,数字末尾通常加字母L来区分。
- float类型在定义时,数字末尾通常加字母F来区分。
- 二进制(0b),八进制(0),十进制,十六进制(0x)。
- 最好完全避免使用浮点数进行比较。
如这样一段代码:
public class Hello {
public static void main(String[] args) {
double a = 0.8;
double b = (8 / 10);
System.out.println(a == b);
float c = 123123123F;
float d = c + 1;
System.out.println(c == d);
}
}
其输出结果为:
这是因为浮点数类型字长有限,比较时会有误差。
比较小数时,可以使用BigDecimal类。
- 所有的字符类型本质上是整数类型,每个字符在Unicode编码表里对应着一个数字。当我们强制类型转换后输出的字符就是这个字符所对应的编码。
引用类型
除了基本类型之外的数据类型都是引用类型。
分为:
- 类
- 接口
- 数组
4.数据类型转换
数据类型优先级:
byte, short, char -> int -> long -> float -> double
低 --------------------------------------------------------> 高
1.强制类型转换
方法同C语言,(类型)变量名。用于高->低。
注意:
- 强制类型转换时,注意防止数据太大导致内存溢出,或者精度问题。
- 不能对布尔值进行转换。
- 不能把对象类型转换为不相干的类型。
- JDK7新特性,数字之间可以用下划线分割,输出的时候不会输出出来。例:int money = 1_0000_0000;
- 赋值的时候是先类型转换再赋值,可以在后面先把一个数据转换的较大类型。例如下面这段代码还是会数据溢出:
int a = 1_0000_0000;
int b = 1000000;
long c = a * b;
//long c = (long)a * b;
2.自动类型转换
例如:
int i = 8;
double d = i;
5.变量、常量、作用域
数据类型 变量名 = 值;
局部变量
在方法里定义和初始化(且必须初始化),可以直接使用。但是只能在当前方法内部使用。
实例变量
定义在方法之外,从属于对象,如果不自行初始化,这个类型的默认值为0,布尔值默认为false,其余的默认值都为null。使用方法如下:
public class Hello {
int age;
String name;
public static void main(String[] args) {
Hello hello = new Hello();// 变量类型 变量名 = 值
System.out.println(hello.age);
System.out.println(hello.name);
}
}
类变量(静态变量)
定义方式和实例变量基本相同,定义时,在前面直接加static,在方法里面就可以和局部变量一样使用了。
常量
在定义变量时在前面加修饰符final,例:
public class Hello {
final static double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
- 所有的变量,方法,类名:见名知意。
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单次以外,后面的单次首字母大写。
- 局部变量:首字母小写和驼峰原则。
- 常量:大写字母和下划线:MAX_VALUE。
- 类名首字母大写和驼峰原则。
- 方法名:首字母小写和驼峰原则。
作用域
- 局部变量的作用域为它所在的花括号之内。
- 实例变量的作用域与类的实例化对象的作用范围相同,private只能在本类使用,protected子类可用,public任何地方都能用。
- 类变量和它所在的类共生死。
6.基本运算符
- 算术运算符:+, -, *, /, %, ++, –
- 赋值运算符:=
- 关系运算符:>, <, >=, <=, ==, !=, instanceof
- 逻辑运算符:&&, ||, !
- 位运算符:&(与), |(或), ^(异或), ~(取反), >>(右移), <<(左移), >>>(无符号右移)
- 条件运算符:? :
- 扩展赋值运算符:+=, -=, *=, /=
注意:
- 计算幂运算的时候用Math类:xy = Math.pow(x, y),返回double类型。
- 字符串连接符: + 。 在输出时字符串+数字运算,后面的数字会拼接;而数字运算+字符串,前面的数字会运算。如:
public class Hello {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(" " + a + b);
System.out.println(a + b + " ");
}
}
7.包机制
- 为了更好的组织类,Java提供了包机制(package),用于区别类名的命名空间。
- 包的本质 --> 文件夹
- 一般利用公司域名倒置作为包名。
- 创建包后,包语句会在程序的最上方,不能删除!!!
- 使用import语句可以导入其他包。
附:
阿里巴巴开发手册(请在浏览器中查看)