注释并不会被执行
- 单行注释
// 单行注释,只能注释一行文字
- 多行注释
多行注释,可以注释多行文字
- 文档注释
javaDoc:文档注释
标识符 关键字 标识符的注意点- 所有标识符都应以大写字母(A-Z),小写字母(a-z),美元符($)或下划线(_)开头
- 首字母之后可以是大写字母(A-Z),小写字母(a-z),美元符($)或下划线(_)或数字的任何字符组合(如#,%之类的特殊符号不能写入标识符当中)
- 不能使用关键词作为类名,方法名或类名
- 可以使用中文或拼音命名,但不建议这样使用
- 强类型语言
要求变量的使用严格符合规定,所有变量使用都必须先定义后才能使用
安全性高,但速度相对慢
- 弱类型语言
- 数值类型
- 整数类型
byte占1个字节范围:-128—127
short占2个字节范围:-32768—32767
int占3个字节范围:-2147483648—2147483647
long占4个字节范围:-9223372036854775808—9223372036854775807
一般使用前三种够用
byte num1=10; short num2=20; int num3=30; //最常用 long num4=30L; //long类型要在数字后面加L(大小写皆可)
拓展
进制:
二进制:0b
八进制:0
十进制:无前缀
十六进制:0x
示例如下:
public class Dome1 {
public static void main(String[] args) {
int num1=0b10;
int num2=010;
int num3=10;
int num4=0x10;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
}
}
- 浮点类型(小数)
float占4个字节
double占8个字节
一般用double
float num5=40.5F; //float类型要在数字后加F(大小写皆可) double num6=50.157894625342; //最常用
拓展
关于银行问题能否用浮点类型表示的问题解答
public class Dome1 {
public static void main(String[] args) {
float num1=0.1f;
double num2=1.0/10;
System.out.println(num1==num2); //比较两个数是否相等
System.out.println(num1);
System.out.println(num2);
}
}
输出数值相等,比较结果却不相等
public class Dome1 {
public static void main(String[] args) {
float num1=147258987456636f;
double num2=num1+1;
System.out.println(num1==num2); //比较两个数是否相等
System.out.println(num1);
System.out.println(num2);
}
}
输出数值不相等,比较结果却相等
浮点数能表现的字长是有限的,存在舍入误差,故而最终结果可能为大约数,接近但不等于真实结果,所以最好完全避免用浮点数进行比较
这里推荐用BigDecimal(数学工具类)
- 字符类型(汉字)
char占2个字符
char num7='中'; //每次只能输入一个汉字或字母
拓展
public class Dome1 {
public static void main(String[] args) {
char num1='a';
char num2='我';
System.out.println(num1);
System.out.println((int)num1); //强制转换
System.out.println(num2);
System.out.println((int)num2);
}
}
所有字符的本质都是数字
- boolean类型
占1位,其值只有true和false两个
boolean num8=true; boolean num9=false;
拓展
boolean num=true;
if (num==true){} //新手
if (num){} //老手
两行代码意思相同
引用类型(reference type)- 类
- 接口
- 数组
运算中,不同类型的数据要先转换为同一类型,然后进行运算
- 强制转换格式(高—低)
(类型)变量名
int num1=127; byte num2=(byte)num1; //强制转换
- 自动转换格式(低—高)
byte num1=125; int num2=num1; //自动转换
注意点
- 不能对布尔值进行转换
- 不能把对象转换为不想干的类型
- 转换的时候可能出现内存溢出或精度问题
System.out.println((int)20.5); System.out.println((int)12.5f);
操作比较大的数时,数值溢出问题
public class Dome1 {
public static void main(String[] args) {
int money=10_0000_0000; //数字之间可以用下划线分割便于识别,不会影响输出结果
int year=30;
long total=year*((long)money); //在转换之前先将一个数字进行转换
System.out.println(total);
}
}
变量
变量概念
内存中位置确定内容不确定的空间
java变量是程序中最基础的存储单元,其要素包括变量名,变量类型和作用域
格式:数据类型 变量名=值
注意事项
- 每个变量都必须有类型,可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 分号结尾
- 类变量
关键词:static
- 实例变量
存在于方法之外,类之中,从属于对象;如果不自行初始化,会输出这个类型的默认值(数值类型的初始化一般为0或0.0;字符串变量初始化为0000;布尔值默认为false;除了基本数据类型其他全部默认为null)
- 局部变量
只存在于方法之中,使用必须声明和初始化,只能在声明和初始化该变量的方法中使用
public class Dome1 {
static int day=2; //类变量
int da; //实例变量
public static void main(String[] args) {
int money=1000000; //局部变量
Dome1 dome1=new Dome1();
System.out.println(dome1.da);
System.out.println(money);
System.out.println(day);
}
}
变量命名规范
- 所有变量,方法,类名:见名知意
- 所有的变量:定义时采用首字母小写和驼峰原则(除了第一个单词外,后面的单词首字母大写):monthSalary
- 常量:定义时采用大写字母和下划线:IP_VALUE
- 类名:定义时采用首字母大写和驼峰原则:ClassMate
- 方法名:定义时采用首字母小写和驼峰原则:runDay()
一种特殊的变量,被设定后,在程序运行过程中不允许被改变
关键词:final
格式:final 数据类型 常量名=值
**注意:**常量名一般使用大写字符
数据类型之前的都为修饰符,修饰符不存在先后顺序
基本运算符- 算数运算符:+,-,*,/,%,++,–
a++和++a的区别
a++:a=a+1
++a:a=a+1
public class Dome1 {
public static void main(String[] args) {
int a=2;
int b=a++; //代码执行后,先给b赋值再自增
//a=a+1
System.out.println(a);
//a=a+1
int c=++a; //代码执行前,先自增再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
-
逻辑运算符:&&,||,!
-
位运算符(效率高):&,|,^,~,>>,<<,>>>
<<:相当于*2,>>:相当于/2
拓展
如何快速计算2*8
System.out.println(2<<3);
- 条件运算符:?:
x ? y : z
如果x==true,则结果为y,否则结果为z
public class Dome1 {
public static void main(String[] args) {
double a=1.74;
String month=a>1.75?"及格":"不及格";
System.out.println(month);
}
}
- 扩展赋值运算符:+=,-=,*=,/=
拓展
字符串连接符:输出语句中出现String(字符串类型),会将其后面的所有操作数转换为String类型进行连接
public class Dome1 {
public static void main(String[] args) {
int a=10;
int b=5;
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
运算符优先级
来源网址
包机制包的本质就是文件夹
一般利用公司域名倒置作为包名
定义包:package
导入包:import
*(通配符):会导入这个包下所有的类
javaDoc用来生成自己的API文档
参数信息
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
生成API文档的步骤
- 在代码中进行文档注释
- 在java文件所在位置打开cmd
- 输入javadoc -encoding UTF-8 -charset UTF-8 文件名+后缀,回车
- 在java文件所在位置生成index.html
- 打开index.html即为API文档



