1、注释、标识符、关键字
注释
注释并不会被执行,是给我们写代码的人看的
书写注释是一个非常好的习惯
平时写代码注意规范
Java的注释有三种
单行注释
// 单行注释
多行注释
/*
多行注释
*/
文档注释
/**
* 文档注释
*/
标识符
关键字
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意点
- 所有的标识发都应该以字母(AZ\az)、美元符($)、下划线(_)开始
- 首字符之后可以是字母(AZ\az)、美元符($)、下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议这样使用,也不建议使用拼音
String hello = "张三";
String Hello = "张三";
String $hello = "张三";
String _hello = "张三";
//String &hello = "张三";
//String #hello = "张三";
//String %hello = "张三";
// String 1hello = "张三";
2、数据类型
强类型语言:要求变量的使用要严格符合规定,所有变量都是必须先定义后才能使用
- 安全性高,速度慢
Java的数据类型:
- 基本类型
- 引用类型
// 八大基本数据类型
// 整数
int num1 = 12;// 常用
byte num2 = 20;
short num3 = 30;
long num4 = 120L;
// 小数:浮点数
float num5 = 62.56F;
double num6 = 3.1415926;
// 字符
char name = 'A';
// 布尔值
boolean flag = true;
数据类型扩展: 进制
/**
* 整数扩展: 进制
* 二进制0b
* 十进制
* 八进制
* 十六进制0x
* --------------------------------
* 浮点数扩展 银行业务怎么表示钱
* float 有限 离散 舍入误差 大约 接近但不等于
* double
* 最好完全避免使用符点数进行比较
* 最好完全避免使用符点数进行比较
* 使用BigDecimal(数学工具类)进行比较
* ------------------------------
* 字符扩展
* 所有的字符本身还是数字
* 编码 Unicode表:97=a 2字节 0-65536
* 早期Excel最长为 2^16 = 65536
* ------------------------------
* 转义字符
* \t 制表符
* \n 换行
* 。。。。
*/
public class Demo03 {
public static void main(String[] args) {
int i = 10;
// 八进制
int i2 = 010;
// 十六进制
int i3 = 0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=====================");
//==========================
// 浮点数扩展
float f = 0.1f;// 0.1
double d = 1.0/10;// 0.1
System.out.println(f==d);//false
float f1 = 23131313312321321f;
float f2 = f1+1;
System.out.println(f2==f1);
System.out.println("=====================");
//==========================
// 字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
// 布尔值的扩展
boolean flag = true;
if (flag){
}
// 相当于
if (flag==true){
}
}
}
3、类型转换
强制转换 (类型) 变量名 高–>低
int i = 128;
byte b = (byte) i;// 内存溢出
// 注意可能会内存溢出
System.out.println(i);//128
System.out.println(b);//-128
自动转换 低–>高
int i = 128;
double b = i;
System.out.println(i);// 128
System.out.println(b);// 128.0
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换时可能存在内存溢出,或精度问题
public class Demo05 {
public static void main(String[] args) {
// 操作比较大的数时,注意溢出问题
// JDK7 新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;// 计算时溢出
long total2 = money*years;
System.out.println(total);// -1474836480
System.out.println(total2);// 默认为int 转换前已经出问题
long total3 = money*((long)years);
System.out.println(total3);
}
}
4、变量、常量
变量
- 变量就是可以变化的量
- Java是一种强类型语言,每个变量都要声明其类型
public class Demo {
public static void main(String[] args) {
// 不建议的写法
// int a,b,c;
// int a=1,b=2,c=3;
// 建议分开写 ,增强程序的可读性
String name = "张三";
char a = 'a';
double pi = 3.14;
}
}
- Java变量是程序中基本的存储单元,其要素包括变量名、变量类型、作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
局部变量、实例变量、类变量
public class Demo06 {
// 类变量 static修饰的变量
static double salary = 2000;
// 属性:变量
// 实例对象:从属于对象;如果不自行初始化,这个类型的默认值
// boolean 默认false
// 除基本类型,其余默认值都是null
String name ;
int age ;
// 主方法
public static void main(String[] args) {
// 局部变量,使用前必须声明和初始化值
// 局部变量只能在作用域内有效
int i = 1;
System.out.println(i);
// 创建对象,使用实例变量
Demo06 demo06 = new Demo06();
System.out.println(demo06.age);
System.out.println(demo06.name);
System.out.println(salary);
}
// 其他方法
public void add(){
//System.out.println(i);
// error:Cannot resolve symbol 'i'
}
}
变量命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线MAX_VALUE
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
常量
public class Demo07 {
// 修饰符不存在先后属性
final static double PI = 3.1415926;
public static void main(String[] args) {
// 无论在哪里都可以之间使用常量
System.out.println(PI);
}
}
5、运算符
同类型运算
package operator;
public class Demo01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a/(double)b);
}
}
不同类型运算
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 13212132131L;
int b = 123;
short c = 10;
byte d = 8;
double e =45.3;
// 自动升为混合运算类型中的最高类型
System.out.println(a+b+c+d);
System.out.println(b+c+d);
System.out.println(c+d);
System.out.println(a+b+c+d+e);
System.out.println(b+c+d+e);
}
}
关系运算符
package operator;
public class Demo03 {
public static void main(String[] args) {
// 关系运算符返回结果 :true/false
int a = 10;
int b = 20;
int c = 21;
// 取模运算
System.out.println(c%a);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
}
}
一元运算符
package operator;
public class Demo4 {
public static void main(String[] args) {
// ++ -- 自增 自减 一元运算符
int a = 3;
// 先赋值,再自增
int b = a++;
System.out.println(a);
// 先自增,再赋值
int c = ++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算 2^3 2*2*2 很多运算用工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
逻辑运算符
package operator;
// 逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));
System.out.println("a || b:"+(a||b));
System.out.println("!(a && b)"+!(a && b));
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
位运算符
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 1101
2*8=16 2*2*2*2
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
+=、-=赋值运算符
package operator;
public class Demo07 {
public static void main(String[] args) {
int a =10;
int b = 20;
a+=b;
a-=b;
System.out.println(a);
// 空字符串的使用
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
三元运算符
package operator;
public class Demo08 {
public static void main(String[] args) {
// x?y:z
// 如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type);
}
}
6、包机制、JavaDoc
包机制
一般利用公司域名倒置作为包名
JavaDoc
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
dos命令生成doc文档
javadoc -encoding UTF-8 -charset UTF-8 *.java