本文章是本人根据视频和网上资料整理所写笔记,可能有不通顺或遗漏的地方,请尽量参考学习来源处的链接去进行学习。
学习来源
【狂神说Java】Java零基础学习视频通俗易懂:https://www.bilibili.com/video/BV12J41137hu
菜鸟教程: https://www.runoob.com/
阿里巴巴Java开发手册
Javadoc---生成Javadoc文档 https://www.cnblogs.com/strive-19970713/p/11166441.html
注释
-
平时我们编写代码,在代码量比较少的时候可以看懂,但是项目结构一旦复杂起来,我们就需要用到注释
-
注释并不会被执行,是给我们写代码的人看的
-
书写注释是一个非常好的习惯
-
Java中的注释有三种:
- 单行注释
- 多行注释
- 文档注释
注释规约(参考阿里巴巴Java开发手册1.3):
下面列举几个我们常用且强制的
-
类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用
-
所有的抽象方法 ( 包括接口中的方法 ) 必须要用 Javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能
-
所有的类都必须添加创建者和创建日期。
-
方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释 使用/ /注释,注意与代码对齐。
-
所有的枚举类型字段必须要有注释,说明每个数据项的用途。
标识符和关键字
关键字:java中事先定义的,有特别意义的标识符,又被称为保留字
关键字注意点:
关键字不能用作变量名、方法名、类名、包名和参数
标识符:Java所有的组成部分都需要名字。类型、变量名以及方法名都被称为标识符。
标识符注意点:
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)或者下划线(_)开始
- 首字符之后是字母(A-Z或者a-z),美元符($)或者下划线(_)或数字的任何字符组成
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符距离:age、$salary、_value
- 非法标识符距离:123abc、-salary、#abc
- 可以使用中文命名,但是一般不建议
- 可以使用拼音,但是也不建议
数据类型
-
强类型语言(安全性搞)
- 要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
-
Java的数据类型分为两大类
- 基本类型(八大基本数据类型)
- 数值类型
- 整数类型:byte 1字节(-128~127)、short 2字节、int 4字节、long 8字节
- 浮点类型:float 4字节、double 8字节
- 字符类型:char 2字节
- boolean类型:占1位,值只有true和false两个
- 数值类型
- 引用类型
- 类
- 接口
- 数组
- 基本类型(八大基本数据类型)
-
整数拓展
进制:
- 二进制0b
- 十进制
- 八进制0
- 十六进制0x
-
浮点数拓展
-
float 大小优先、离散、含入误差、大约接近但不等于(如需比较,最好完全使用浮点数进行比较)
-
double
-
BigDecimal 数学工具类(银行业务一点要用这个
float = 0.1f;//0.1 double = 1.0/10;//0.1 System.out.println(f==d);//false float d1 = 1212121213123123f; float d2 = d1 + 1; System.out.println(f==d);//true
-
-
字符拓展
-
char
- 所有的字符本质还是数字
- 编码 默认Unicode(A=65 a=97) 2字节
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
-
转移字符
- 制表符
- 换行
- ...
-
-
布尔值拓展
boolean flag = true; if(flag == true){} 相当于 if(flag) //Less is More! 代码要精简 写熟练前一种模式之后就要开始学会精简代码
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低到高 byte,short,char->int->long->float->double
-
运算中,不同类型的数据先转化为同一类型,然后再进行运算
-
强制类型转换
-
自动类型转换
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换成不想干的类型
- 在把高容量转换成低容量的时候,强制转换,转换的时候可能存在内存溢出,或者精度问题
public static void main(String[] args){
//操作比较大的数的时候,注意溢出问题
//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
System.out.println(total3);
}
变量和常量
变量
-
变量是什么:急速可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包含变量名,变量类型和作用
//数据类型 变量名 = 值;可以使用都好隔开来声明多个同类型变量 type varName [=value] [{,varName[=value]}];
-
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以说引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
常量
-
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
-
所谓常量可以理解成一重特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名=值; final double p1=3.14;
-
常量名一般使用大写字符
命名规范
简而言之,参考阿里云Java规范
- 所有变量、方法、类型:见名知意
- 类成员变量:首字母小写+驼峰原则
- 常量:大写字母+下划线:MAX_VALUE
- 类名:首字母大写+驼峰原则
- 方法名:首字母小写+驼峰原则
运算符
如图:
运算操作都是往高类型转
自动升为混合运算类型中最高类型
比如:long a = 12345L; int b = 2;
a+b后的结果是long类型
短路运算
组合逻辑运算,如果前面结果就为false,那么后面就不会进行了
int a = 5;
boolean b = (c<4)&&(c++<4);
System.out.println(b);//结果为false
System.out.println(a);//结果为5
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 与操作:相同保持相同,不同为0
A|B = 0011 1101 或操作:只要一个是1就为1,都是0才为0
A^B = 0011 0001 异或操作:相同为0,不同为1
~B = 1111 0010 取反:顾名思义
左移:<< 右移:>>
带字符串运算
int a=10,b=20;
System.out.println(""+a+b); //结果是1020
System.out.println(a+b+"");//结果是30
Math
提供非常多的运算方法,一般在Java中涉及到复杂运算会使用这个工具类来操作!
自增和自减
重点(面试和笔试高频)
b=a++;先给b赋值,再自增
c=++a;先自增,再给c赋值
public static void operator1(){
//++ -- 自增,自减
int a = 3;
int b = a++; //先给b赋值,再自增
//a++ => a = a + 1
int c = ++a;//先自增,在给c赋值
//++a => a+1
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
}
另外补充:
a+=b; // a = a + b
a-=b; // a = a - b
三元运算符
必须掌握,开发常用
x ? y : z
如果x==true,则结果为y,否则结果为z
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
-
宝语句的语法格式为:
package pkg1[.pkg2[.pkg3...]]
-
一般利用公司域名倒置作为包名
-
如果我们在Java程序中明确导入某个包,需要用到“import”语句
JavaDoc生成文档
-
javaodc命令用来生成自己API文档的
javadoc -encoding UTF-8 -charset UTF-8
-
参数信息
- @author 作者名
- @version 版本号
- @since 指名需要醉倒使用的jdk版本
- @param 参数名
- @return 返回值
- @throws 异常抛出