1. 注释
①单行注释 //
②多行注释
/* */
③文档注释
/** */
和JAVADoc联合使用
2. 标识符
Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。
Java所有的组成部分都需要名字。类名、变量名以及方法名都被标称为标识符。 如下代码,HelloWorld需要class描述,就是一个类名,属于标识符;main是一个方法,需要public static void修饰,属于标识符;student个字符串需要String修饰,属于标识符。
public class HelloWorld{
public static void main(String[] args) {
String student = "小小奇"
System.out.println("Hello World");
}
}
注:
①所有的标识符都应该以字母、美元符或下划线开始,但是不可以是数字
②不可以用关键词来作为变量名或方法名
③标识符非法举例:1abc、-abc、#abc等,;合法举例abc、$abc、a1bc
3. 数据类型
Java是强类型语言,要求变量的使用要严格符合规定,所有变量必须先定义后才可以使用
Java的数据类型有两大类:
- 基本类型(primitive type):
①数值类型:
整数类型,byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)
浮点类型,folat(4个字节)、double(8个字节)
字符类型char(2个字节,只能是一个字)
注:字符串String不是关键字,是类
②boolean类型:占1位其值只有true和false两个 - 引用数据类型(reference type):类、接口、数组
注:什么是字节?
4.数据类型扩展
- 整数拓展
public class Demo {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制
int i3 = 0x10; //十六进制0x 0~9 A~F,F相当于16
System.out.println(i);//输出为10
System.out.println(i2);//输出为8
System.out.println(i3);//输出为16,0x11输出为17
}
}
- 浮点数拓展
public class Demo {
public static void main(String[] args) {
//浮点数拓展,float、double
//float表达的数都是有限且离散的,存在舍入误差,数字始终是接近
//不可以用float进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较,非要比较可用BigDecimal这个类
float f = 0.1f;//float关键字定义的数据后要带f
double d = 1.0/10;
System.out.println(f==d);//输出为false,因为float表达的数都是有限且离散的,存在舍入误差
}
}
3.字符串拓展
public class Demo {
public static void main(String[] args) {
char c1 = 'a';
char c2 = '中';
System.out.println(c1);//输出的结果是a
System.out.println((int)c1);//强制转换,输出的结果是97
/*所有的字符本质还是数字,Unicode编码可以用来处理任意语言的文字,最多可以表示65536(2^16)个字符,在unicode编码表里a=97*/
//转义字符,如\t表示制表符、\n换行
}
}
5.强制转换
由于JAVA是强类型语言,所有要进行有些运算的时候,需要用到强制类型转换,类型由低到高byte,short,char-> int -> float -> double。
public class Demo {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i;//强制类型转换
//强制转换 (类型)变量名
//由低到高是会自动转换,double b = i时输出的是128.0,自动转换
System.out.println(i);//输出的结果是128
System.out.println(b);//输出的结果是-128,内存溢出,因为byte的最大值是127
}
}
注:
- 不可对布尔值进行转换,不相干的对象类型不可以转换
- 转换的时候可能存在内存溢出,或者精度问题
- 操作较大的数的时候注意溢出问题
public class Demo {
public static void main(String[] args) {
int money = 10_0000_0000;//JDK7新特性,可以用下划线分割数字
int years = 20;
int total = money*years;
System.out.println(total);//输出的结果是-1474836480,结果溢出了
//用long转换
long total2 = money*years;
System.out.println(total2);//输出的结果还是-1474836480,因为默认money*years的结果是int,计算完之后赋值给total,再转换,可是问题出现在转换之前
long total3 = money*((long)years);
System.out.println(total3);//结果是2000000000正确的
}
}
6.变量
变量就是可以变化的量!用变量来操作内存中的数据(变量指代一个空间,空间的位置是定的,只是放的东西不确定)
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以用逗号隔开来声明多个同类型的变量。
public class Demo {
public static void main(String[] args) {
//数据类型 变量名 = 值
int a,b,c;//基本类型,建议换行写;
String name = "xiaoxiaoqi";//引用类型
System.out.println(total2);
}
}
变量作用域
类变量、实例变量、局部变量
public class Demo {
//属性:变量
static int allClicks = 0;//类变量,加了static则为类变量
String str = "Hello World";//实例变量,方法的外面、类的里面
//main 方法
public static void main(String[] args){
//局部变量;仅在方法内有效且必须声明和初始化!!!
int i = 10;
}
//其他方法
public void add() {
int i = 0;//局部变量
}
}
如何使用对象
public class Demo {
String str = "Hello World";//实例变量,方法的外面、类的里面
static int allClicks = 0;//类变量,加了static则为类变量
int age;//实例变量可以不赋值,默认为0.布尔值默认为false。除了基本类型以外都默认null
//main 方法
public static void main(String[] args){
//局部变量;仅在方法内有效且必须声明和初始化!!!
int i = 10;
//如要使用实例变量String,需要构建对象
Demo demo = new Demo(); //构建对象,变量类型 变量名字 = new Demo();
//构建完对象后可以使用实例变量了
System.out.println(demo.String);//输出结果为Hello World;
//类变量可以直接使用!!!
System.out.println(allClicks);//输出为0
}
}
常量
常量:初始化后不能再改变的值,所谓常量可以理解为一种特殊的变量,一般用大写字符,加上关键词final
public class Demo {
//final 常量名=值;
//static、public为修饰符,不区分顺序
static final double PI = 3.14;///类变量,加了static则为类变量
public static void main(String[] args){
System.out.println(PI);//类变量可以直接使用!!!
}
}
变量命名规范
①所有变量、方法、类名要见名知意
②类成员变量:首字母小写和驼峰原则:monthSalary除第一个单词以外后面的单词首字母大写
③局部变量:首字母小写和驼峰原则
④常量:大写字母和下划线:MAX_VALUE
⑤类名:首字母大写和驼峰原则:Man,GoodMan
⑥方法名:首字母小写和驼峰原则:run(),runRun()
7.基本运算符
/表示除,要注意整数除后只能是求得整数,要完整得数得转为double、%是取余数、==判断等于,instanceof是java的保留关键字,是一个二元操作符、&& || !与或非
public class Demo {
public static void main(String[] args){
int a = 3;
int b = a++;//a=a+1执行完后再把这个a赋值给b,再自增;所以b的结果是3,而a
System.out.println(a);//输出4
int c = ++a;//a = a+1执行完前先自增,再给b赋值;
System.out.println(c);//结果是5
System.out.println(a);//结果是5,a加了两次
System.out.println(b);//结果是3
}
}
有些运算我们使用工具类Math来操作,如幂运算
double pow = Math.pow(3,2);//即求2^3=8
位运算符:
&、| ~与或非、^异或
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 都为1时才取1,否则为0
A|B = 0011 1101 都为0时才取0,否则为1
A^B = 0011 0001 相同则为0,否则为1
~B = 1111 0010 取反
*/
<< 左移(相当于*2)
…>> 右移(相当于/2)
//求2*8=16
//二进制的0表示为0000 0000,二进制的1表示为0000 0001,二进制的2表示为0000 0010
//二进制的3表示为0000 0011,二进制的0表示为0000 0100,二进制的8表示为0000 1000
//二进制的16表示为0001 0000
System.out.println(2<<3);//求2*8,结果为16;相当于0000 0010左移3位得到0001 0000
三元运算符
public class Demo {
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println(a+b);//结果是30
System.out.println(""+a+b);//结果是1020,前面得"" +是字符串拼接符
System.out.println(""+a+b);//结果是30,拼接符在2后面,是运算后拼接
}
}
public class Demo {
public static void main(String[] args){
//x ? y : z
//表示如果x == true,结果是y,否则结果是z
int score = 80;
String type = socre < 60 ?"不及格":"及格";//相当于if
System.out.println(type);//输出是“及格”,
}
}
8.包机制
为了更好地组织类,JAVA提供了包机制,用于区别类名的命名空间。包语句的语法格式为:
package pkg1 [.pkg2[.pkg3…]];
一般利用公司域名倒置作为包名;如com.baidu.wenku…一层一层的递进。导入包
import package[.package2…].(classname|*);
impoet com.baidu.wenku.*;//导入这个包内所有的类
9.JAVADoc
在线API帮助文档
javadoc命令是用来生成自己API文档的
参数信息
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@throws 异常抛出情况
API,全称Application Programming Interface,即应用程序编程接口。
API是一些预先定义函数,目的是用来提供应用程序与开发人员基于某软件或者某硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。
API就是操作系统给应用程序的调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作)。在 Windows 中,系统API是以函数调用的方式提供的。