语法基础
注:主要记录Java有而C++没有的特点
1.注释
单行多行跟C++无区别
文档注释:
/**
*@(注释标题1) 具体内容
*@(注释标题2) 具体内容
*/
2.关键字
java可以用中文命名标识符
3.数据类型
跟C++一样,java也是强类型语言
3.1基本类型
整数类型 | 含义 |
---|---|
byte | 占1个字节:-128~127 |
short | 占2个字节:-32768~32767 |
int | 占4个字节:-2147483648~2147483647 |
long | 占8个字 节: -9223372036854775808~9223372036854775807 |
没有long long类型
int n1=10;
long n2=10L; //加个L来标定10是long类型,否则报错
int i1=10; //十进制
int i2=010; //八进制0
int i3=0x10; //十六进制0x
int x=10_00_00 //打印x时下划线不会被输出。这种方法主要是为了更清楚地看一个大数字
浮点类型 | 含义 |
---|---|
float | 占4个字节 |
double | 占8个字节 |
long f1=1.1F; //加个F来标定1.1是float类型,否则报错
double f2=1.1;
字符类型 | 含义 |
---|---|
char | 占2个字节, Unicode编码(U0000~UFFFF) |
布尔类型 | 含义 |
---|---|
boolean(不是bool) | 占一位。只有true、false两个值 |
3.2引用类型
类、 接口、数组
4.类型转换
(类型)变量名 //强制转换 高-->低
long a=1000000000;
int b=10;
long x=a*b; //x会输出10000000000,b在计算过程中会自动向上转换
//如果声明的是int a,那么a*b不会产生类型转换,计算结果会溢出,x会获得溢出值
注:1.不能对boolean进行转换。
2.不能把对象类型转换位不相关的类型。
3.在把高容量类型(如long)转换到低容量类型(如int)的时候要执行强制转换。反之会执行自动转换。
4.转换的时候可能存在内存溢出或精度问题。
5.变量
实例变量若不初始化,一般默认值都是类似0,0.0,null,false的形式
类变量:用static修饰
public class Demo{
static double salary=2500;
double age=25;
public static void main(String[] args){
Demo demo=new Demo();
System.out.print(demo.age); //实例变量必须通过对象调用
System.out.print(salary); //类变量不用通过对象调用
}
}
常量
java的常量用final修饰
变量命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母用大写 monthCommonBonus
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,LinkList
- 方法名:首字母小写和驼峰原则
6.运算符
java多了一个instanceof,其他跟C++一样
instance的作用是测试它左边的对象是否是它右边的类的实例,返回boolean 的数据类型。
boolean result = object instanceof class
public static void main(String[] args) {
Object testObject = new ArrayList();
displayObjectClass(testObject);
}
public static void displayObjectClass(Object o) {
if (o instanceof Vector)
System.out.println("对象是 java.util.Vector 类的实例");
else if (o instanceof ArrayList)
System.out.println("对象是 java.util.ArrayList 类的实例");
else
System.out.println("对象是 " + o.getClass() + " 类的实例");
}
}
//输出为"对象是 java.util.ArrayList 类的实例"
对象若是 类(或直接子类、间接子类,也可以说是同一继承树) 的对象 那么instanceof会返回true。
null用instanceof跟任何类型比较时都是false。
//一个特例
int a=10,b=10;
System.out.print(""+a+b); //输出20
System.out.print(a+b+""); //输出1010
//从左往右看来判断"+"号是字符串连接还是算数加法
更多数学运算可以调用Math类
7.包机制
package
类似于C++的namespace。也可以看成文件夹。可以避免命名冲突
package pkg1[.pkg2[.pkg3...]]
类a放在目录Mitchell.tools下,因此编写类a的时候必须在开头加上一句
package Mitchell.tools;
编辑类HelloWorld,必须在开头加上一句
package Mitchell;
import导包
import语句必须放在package语句下面
import package1[.package2].(classname | *); //*代表相关包下的所有类
8.JavaDoc
目的:生成自己的API文档
基本内容
可用参数 | 含义 |
---|---|
@author | 作者名 |
@version | 版本号 |
@since | 指明需要最早使用的jdk版本 |
@param | 参数名 |
@return | 返回值情况 |
@throws | 异常抛出情况 |
按目录方式打开文件
当前文件目录
生成文档的方法
方法1 命令行
方法2 idea内置工具
效果
网页效果