注释
书写注释是一个非常好的习惯
//单行注释//
/ 多行注释 /
/**
*文档注释
*/
标识符
关键字
java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符
常 | 见 | 关 | 键 | 字 |
---|---|---|---|---|
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
thransient | try | void | volatile | while |
命名规则
- 以字母(区分大小写),美元符($)或者下划线(_)开始;
- 首字符之后可以是字母(区分大小写),美元符($),下划线(_)或者数字的任何字符组合;
- 不能使用关键字作为变量名或方法名;
- 标识符是大小写敏感的;
- 合法标识符举例:age、$skds、_value、__1_value
- 非合法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但不建议,包括拼音。
数据类型
强类型语言
要求变量的使用要严格符合使用规定,所有变量都必须先定义后才能使用。
优点:安全性高 ; 弊端:速度慢。
弱类型语言
eg:VB、JS ;
基本类型
引用类型
字节
- 位(bit):计算机内部数据存储的最小单位,11001100是一个八位二进制数
- 字节(byte):计算机中数据处理的基本单位,常用 B 表示
- 1B=8bit
- 字符:指计算机中使用的字母、数字、字和符号
拓展(面试题)
整数
int i = 10;
int i2 = 010; //八进制 0
int i3 = 0x10;//十六进制 0x 0~9 A~F 16
浮点数
银行业务怎么表示?(钱)
若用浮点数表示,如图:
问题所在:float 有限 离散 大约 接近但不等于
故:最好完全避免使用浮点数进行比较,可以用 BigDecimal 数学工具类。
字符
强制转换
因为***所有的字符本质还是数字***
编码 Unicode 0-65536 ASCII表 (a=97 A=65 字母大小写相差32)
//U000 UFFFF
char c = '\u0061';
System.out.println(c); //输出结果为 a
转义字符
意义 | |
---|---|
\b | 退格,将当前位置移到前一列 |
\f | 换页 |
\n | 换行 |
\r | 回车,将当前位置移到本行开头 |
\t | 水平制表,跳到下一个TAB位置 |
\ddd | 1到3位八进制数所代表的任意字符 |
\uhhhh | 1到2位十六进制数所代表的任意字符 |
布尔值
boolean flag = true;
if(flag==true){} //新手的写法
if(flag){} //与上一句相等,因为flag默认为true
//代码要精简易读
类型转换
低-------------------------------------------------------------->高
byte,short,char—> int —> long—>float—> double
运算中,不同类型的数据先转化为同一类型,再进行运算。
强制转换 (类型)变量名 高—>低
**自动转换 ** 低—>高
注意:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低容量时,强制转换
- 转换的时候可能存在内存溢出或者精度问题
JDK新特性:
数字之间可以用下划线分割。
eg: int money = 10_0000_0000 //输出为1000000000
变量
概念
- 就是可以变化的量!
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varname [=value] [{,varName[=value]}];
//数据类型 变量名 = 值; 可以用逗号隔开来声明多个同类型变量,但不建议!
注意事项:
- 每个变量都有类型,类型可以是基本类型也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
分为 :类变量,实例变量,局部变量
public class Variable{
static int allClicks=0; //类变量
String str = "hello world"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
局部变量:只在当前{ } 内实现,必须声明和初始化值。
实例变量:从属于对象,如果不自行初始化,会变成这个类型的默认值 0或0.0,
布尔值的默认值是false, 除了基本类型,其余的默认值都是null。
需要先写出类:
//变量类型 变量名 = new Demo();
Demo demo = new Demo(); // 快捷方法:new Demo().var回车
类变量:static,从属于类
常量
初始化后不能再改变值!在运行过程中不会变动的值。
final 常量名 = 值;
final double PI = 3.14; //常量名一般用大写字符
命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
运算符
运算符 | 表示 |
---|---|
算术运算符 | +,-,*,/,%,++,- - |
赋值运算符 | = (读法 把 x 赋值给 y ) |
关系运算符 | < , > , <= , >= , == , != ,instanceof |
逻辑运算符 | &&,||,!(与 或 非) |
位运算符 | &,|,^,~, >>, << ,>>>(了解即可) |
条件运算符 | ? :() |
扩展赋值运算符 | += ,-= ,*= ,/= |
算术运算符
long a = 1241414242433L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//Long 只要有long类型结果,就会变成long类型,double类型同理
System.out.println(b+c+d);//Int 如果没有long类型,接过都为int类型
System.out.println(c+d);//Int
关系运算符
返回的结果:正确/错误 布尔值
自增自减
自增如下,自减同理
int a = 3;
int b = a++;//执行完这行后,先给b赋值,再自增
//隐藏代码:a = a+1;
//隐藏代码:a = a+1;
int c = ++a;//执行完这行前,先自增,再给c赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
幂运算
快捷输入:Math.pow(x,y).var 回车
//2^3 2*2*2=8
double pow = Math.pow(2,3);
System.out.println(pow);
逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//false
//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b));//true
//逻辑或运算:两个变量有一个为真,则结果为true
System.out.println("!(a && b):"+!(a&&b));//true
//如果为真,则结果为假,如果为假则为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
//说明逻辑与运算中,当第一个条件为false时,
//会发生短路,便不会执行第二个条件
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 //按位与:当AB同位上的值都为1,则为1;
A|B = 0011 1101 //按位或:当AB同位上的值有1时,则为1;
A^B = 0011 0001 //按位异或:当AB同位上的值相同,则为0,反之为1;
~B = 1111 0010 //按位取反:取相反值;
<< 左移:相当于*2
*>>*右移:相当于/2
2^4=16 , 可以输 System.out.println(2<<3);
扩展和条件运算符
扩展运算符:
a+=b 即:a = a+b;
a-=b 即:a = a-b;
条件运算符:
//x ? y : z 如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score <60 ? "不及格" : "及格";
System.out.println(type); //输出为不及格
字符连接符
+ 两侧如果有出现String类型,只要String类型不是出现在最末尾,都会将其余转成String类型并进行链接。
int a = 1;
int b = 2;
System.out.println(""+a+b);//12 字符串在前面,后面进行拼接
System.out.println(a+b+"");//3 字符串在后面,前面进行运算
System.out.println(a+""+b);//12 字符串在中间,进行拼接
优先级
JavaDoc
命令行打开:
javadoc 参数 Java文件