4月25日周日因为家里的事情没能抽出时间学习,在此深深谴责自己,不过知识还是要继续去获取的,加油奥利给!
还有之前因为markdown图片复制到博客加载不出来的问题困扰了很久,暂时还没想到什么办法,就先在博客上直接写8
为了之后方便管理,建一个空项目
- 新建一个模块
- 打开项目结构,保持这两个值为8,配好环境,不然标红运行不了
- 然后新建class就可以开始写啦
1注释
书写注释是一个非常好的习惯
平时写代码一定要注意规范
//单行注释,只能注释一段文字
/*
多行注释
多行注释
多行注释
可以注释一段文字
*/
/**
* JavaDoc:文档注释
*有功能,可以加参数,例如
*@Description HelloWorld
*/
注释可以按自己喜好调整颜色
2标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
- 关键字
标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始,例如:
- Ahello
- hello
- $hello $salary
- _hello _1_value
- 首字符之后可以是字母(A-Z或者a-z),美元符($),下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的,比如变量Man和man是不一样的东西
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音
3数据类型
-
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
Java、C++
安全性高、速度会慢 -
弱类型语言:JavaScript、VBScript
Java的数据类型分类
- 基本类型(primitive type)
//八大基本数据类型
//整数
int num1 = 10;//最常用
byte num2 = 20;
short num3 =30;
long num4 = 30L; //Long类型要在数字后面加个L
//小数:浮点数
float num5 = 50.1F; //float类型要在数字后面加个F
double num6 =3.14159265358979;
//字符
char name ='A'; //字符用单引号
//字符串,String不是关键字,是类
String name2 = "碧咸"; //字符串用双引号
//布尔值:是非
boolean flag = ture
- 引用类型(reference type):类、接口、数组
字节
- 位(bit):是计算机内部数据储存的最小单温,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit表示1位,1Byte表示一个字节1B=8b
- 1024B=1KB,1024KB=1M,1024M=1G,1024G=1T
思考:电脑的32位和64位的区别是什么呢?
寻址能力。32位最大支持4G内存;’64位理论上支持128G内存。
4数据类型拓展
- 整数拓展 :
进制问题:二进制0b;十进制;八进制0;十六进制0x
int i = 10;
int i0 = 0b10;
int i2 = 010;
int i3 = 0x10;
- 浮点数拓展:银行业务怎么表示?钱
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //输出结果为false
float d1 =23232323232323f;
float d2 = d1+1;
System.out.println(d1==d2); //输出结果为ture
float 有限 离散 舍入误差 大约 接近但不等于
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
回到问题:银行业务用 BigDecimal 数学工具类
调试
- 运行到这里停止
- 点击Debug进行调试
- 然后出现调试窗口
- 字符拓展
char c1 ='a';
char c2 ='中';
System.out.println(c1); //结果为a
System.out.println((int)c1); //强制转换,结果为97
System.out.println(c2); //结果为中
System.out.println((int)c2); //强制转换,结果为20013
char c3 ='\u0061';
System.out.println(c3); // 结果为a
所有的字符本质还是数字
编码 Unicode 如表:97=a 65=A
占2字节,表示65536个字符,U0000~UFFFF
- 转义字符 \t 制表符 \n换行 …自行学习
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
- 有待探究 对象 从内存分析
String sa = new String(original:"hello world");
String sb = new String(original:"hello world");
System.out.println(sa==sb);//输出结果为false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//输出结果为true
- 布尔值拓展 下面两种是同样的意思,但代码要精简易读 Less is more
boolean flag =true;
if(flag==true){} //新手
if(flag){} //老手
5类型转换
Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
运算中,不同类型的数据先转化为同一类型,然后进行运算
小数优先级大于整数
- 强制类型转换 高–低 (类型)变量名
- 自动类型转换 低–高
int i = 128;
byte b = (byte)i; //要强制转换
double a = i; //自动转换
System.out.println((int)23.7);//输出结果为23
System.out.println((int)-45.89f);//输出结果为-45
char c ='a';
int d = c+1;
System.out.println(d);//输出结果为98
System.out.println((char)d);//输出结果为b
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 强制转换的时候可能存在内存溢出,或者精度问题
操作比较大的数的时候,注意溢出问题
JDK7新特新,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;//-1474836480
long total2 = money*years;//默认是int,转换之前已经存在问题
long total3 = money*((long)years);//先把一个数转换为long
6变量
- 变量就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,都必须以分号结束
变量作用域
- 类变量:static ,也称静态变量
- 实例变量:从属于对象,也叫成员变量;如果不自行初始化,为这个类型的默认值 0;0.0
布尔值:默认是false;除了基本类型,其余的默认值都是null; - 局部变量:必须声明和初始化值
常量
初始化后不能再改变值,在程序运行过程中不允许被改变
常量名一般使用大写字符
修饰符不存在先后顺序,比如下面两个效果相同
static final double PI=3.14;
final static double PI=3.14;
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary、lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man, GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()