Java基础
注释
这世上我最讨厌两种人,一种是写代码不写注释的人,另一种是让我写注释的人。(dog)
开玩笑的,一定要养成书写注释的习惯。
- java的三种注释
- 单行注释
- //
- 多行注释
- /*
- 多段文本
- */
- 文档注释(用于JavaDoc)
- /*
- * @关键词 文本
- * @Author 我还能卷
- */
- 单行注释
标识符和关键字
标识符注意点
- 都应以字母(A-Z a-z)、美元符($)或者下划线(_)开始。
- 首字符之后可以是字母(A-Z a-z)、美元符($)、下划线(_)或数字的任意字符组合
- 注:像~、!、@、#、^这一类的特殊符号不可以使用。
- 标识符会区分大小写
- 不能使用关键字!!!
- 可以用中文,但一般不建议使用!!!
关键字
| Java关键字类别 | Java关键字 | 关键字含义 |
|---|---|---|
| 访问控制 | private | 一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量) |
| 访问控制 | protected | 一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符 |
| 访问控制 | public | 一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 |
| 类、方法和变量修饰符 | abstract | 表明类或者成员方法具有抽象属性,用于修改类或方法 |
| 类、方法和变量修饰符 | class | 声明一个类,用来声明新的Java类 |
| 类、方法和变量修饰符 | extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
| 类、方法和变量修饰符 | final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
| 类、方法和变量修饰符 | implements | 表明一个类实现了给定的接口 |
| 类、方法和变量修饰符 | interface | 接口 |
| 类、方法和变量修饰符 | native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
| 类、方法和变量修饰符 | new | 用来创建新实例对象 |
| 类、方法和变量修饰符 | static | 表明具有静态属性 |
| 类、方法和变量修饰符 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
| 类、方法和变量修饰符 | synchronized | 表明一段代码需要同步执行 |
| 类、方法和变量修饰符 | transient | 声明不用序列化的成员域 |
| 类、方法和变量修饰符 | volatile | 表明两个或者多个变量必须同步地发生变化 |
| 程序控制 | break | 提前跳出一个块 |
| 程序控制 | continue | 回到一个块的开始处 |
| 程序控制 | return | 从成员方法中返回数据 |
| 程序控制 | do | 用在do-while循环结构中 |
| 程序控制 | while | 用在循环结构中 |
| 程序控制 | if | 条件语句的引导词 |
| 程序控制 | else | 用在条件语句中,表明当条件不成立时的分支 |
| 程序控制 | for | 一种循环结构的引导词 |
| 程序控制 | instanceof | 用来测试一个对象是否是指定类型的实例对象 |
| 程序控制 | switch | 分支语句结构的引导词 |
| 程序控制 | case | 用在switch语句之中,表示其中的一个分支 |
| 程序控制 | default | 默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
| 错误处理 | try | 尝试一个可能抛出异常的程序块 |
| 错误处理 | catch | 用在异常处理中,用来捕捉异常 |
| 错误处理 | throw | 抛出一个异常 |
| 错误处理 | throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| 包相关 | import | 表明要访问指定的类或包 |
| 包相关 | package | 包 |
| 基本类型 | boolean | 基本数据类型之一,声明布尔类型的关键字 |
| 基本类型 | byte | 基本数据类型之一,字节类型 |
| 基本类型 | char | 基本数据类型之一,字符类型 |
| 基本类型 | double | 基本数据类型之一,双精度浮点数类型 |
| 基本类型 | float | 基本数据类型之一,单精度浮点数类型 |
| 基本类型 | int | 基本数据类型之一,整数类型 |
| 基本类型 | long | 基本数据类型之一,长整数类型 |
| 基本类型 | short | 基本数据类型之一,短整数类型 |
| 基本类型 | null | 空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量 |
| 基本类型 | true | 真,boolean变量的两个合法值中的一个 |
| 基本类型 | false | 假,boolean变量的两个合法值之一 |
| 变量引用 | super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| 变量引用 | this | 指向当前实例对象的引用,用于引用当前实例 |
| 变量引用 | void | 声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值 |
| 保留字 | goto | 保留关键字,没有具体含义 |
| 保留字 | const | 保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新 |
数据类型
引:强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义才能使用
java的两大类数据类型
基本类型
- 数值类型
- 整数类型
- byte占1字节,范围:-128~127
- short占2字节,范围:-32768~32767
- int占4字节,范围:- 2147483648 ~ 2147483647
- long占8字节,范围:- 9223372036854775808 ~ 9223372036854775807
- 浮点类型
- float占4字节
- double占8字节
- 字符类型char占2字节
- 整数类型
- Boolean类型:占1位,值只有true和false
注:
字 word
字节 byte
位 bit,来自英文bit,音译为“比特”,表示二进制位。
字长是指字的长度
1字节=8位(1 byte = 8bit)
子和字节的关系要根据当前计算机长度来运算
16位机:16位=2字节=1字
32位机:32位=4字节=1字
64位机:64位=8字节=1字
引用类型
- 类
- 接口
- 数组
注:定义long和float类型时,数值后要加L和F
eg:
long age = 100L;
float salary(工资) = 10000.98F;shijin
拓展与面试
在十进制、八进制、十六进制下定义数值10
| 十进制 | 八进制 | 十六进制 |
|---|---|---|
| int i = 10; | int i =010 | int i = 0x10 |
浮点数
float f = 0.1f;(数值为0.1)
double d = 1.0/10;(数值为0.1)
f 不等于 d
float小数点前后加起来有效数字只有6位
double小数点前后加起来有效数字有16位
最好完全避免使用浮点数进行比较!!!
一般需要精确时使用BigDecimal类
类型转换
- 强制类型转换:高容量到低容量需要使用
eg:
long i = 1000000000;
int j = (int)i; (类型)变量名
- 自动类型转换:低容量到高容量
eg:
int i = 200;
float j = i;
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相关的类型
- 转换时可能会存在内存溢出,或者精度问题
- 运算时,不同数据类型需要先转化为同一类型再运算
变量、常量、作用域
变量作用域
- 类变量
- 实例变量
- 局部变量
public class Variable{
static int allClicks = 0; //类变量
String str = "hello world"; //实例变量:从属于对象;不自行初始化,返回默认值 0 0.0
//布尔值:默认false
//除了基本类型,其余的都是null
public void method(){
int i = 0; //局部变量:必须声明和初始化值
}
}
常量
常量名一般使用大写字符
命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:daySalary
- 局部变量:同上
- 方法名:同上
- 类名:首字母大写和驼峰原则:DaySalary
- 常量:大写字母和下划线:DAY_SALARY
基本运算符
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,<=,>=,==,!=
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符: ?:
- 扩展赋值运算符:+=,-=,*=,/=
自增自减运算符、Math类
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
int c = ++a; //执行完这行代码后,先自增,再给c赋值
幂运算
double pow = Math.pow(2,3);
System.out.println(pow); //结果为2的三次方=8
逻辑运算符
boolean a = true;
boolean b = false;
System.out.println(a&&b); //false 两个都为真,结果才为真
System.out.println(a||b); //true 两个有一个为真,结果才为真
System.out.println(!(a&&b)); //true 如果为真,则结果为假;如果为假,则结果为真
位运算符
A = 0011 1100
B = 0000 1101
A&B =0000 1100 有零为零,没零为一
A|B =0011 1101 有一为一,没一为零
A^B =0011 0001 相同为零,不同为一
~B =1111 0010 全部相反
<< *2
>> /2
2<<3 = 16
16>>3 = 2
三元运算符
a+=b; //a = a+b
a-=b; //a = a-b
int a = 10;
int b = 20;
System.out.println("123"+a+b); //结果为1231020 字符串+会将后面自动转换为字符串进行拼接
System.out.println(a+b+"123"); //结果为30123
x ? y : z //如果x==true,则结果为y,否则结果为z
点赞 ? 开心 : 伤心
包机制
一般利用公司域名倒置作为包名
eg:
www.baidu.com
包名:com.baidu.www
如果要使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句
import package1.(classname *);
JavaDoc生成文档
javadoc命令用来生成自己的API文档
参数信息
- @author 作者名
- @version 版本号
- @since jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
用命令行生成:
javadoc javadoc参数 文件名.java
用idea生成:
Tool ------> Generate JavaDoc... ------> 选择整个项目还是模块还是单个文件
Output directory:生成文档的路径 Other command line arguments:传入JavaDoc的参数
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv72494