Java基础
1、注释
1.1、单行注释
//这是一个单行注释
1.2、多行注释
/*
这是一个多行注释
*/
1.3、文档注释
/**
* JavaDoc注释
*/
1.3.1、JavaDoc作用
用来生成自己的API帮助文档,附JavaAPI帮助文档地址:JavaAPI帮助文档
1.3.2、JavaDoc参数信息
-
@author:作者
-
@version:版本号
-
@since:最早使用的jdk版本
-
@param:参数名
-
@return:返回值情况
-
@throws:抛出异常情况
1.3.3 命令行生成帮助文档
-
win + R,打开Dos命令窗口
-
进入要生成帮助文档的Java类所在的文件夹的位置
-
输入命令,生成文档
命令为:javadoc -encoding UTF-8 -charset UTF-8 类名.java
-
进入要生成帮助文档的Java类所在的文件夹的位置,点击index.html查看帮助文档
1.3.4使用IDEA生成帮助文档
-
在idea中打开Tools,打开Generate JavaDoc,进行如下配置后,点击OK,即可生成!
2、标识符
-
Java所有的组成部分都需要名字,类名、变量名以及方法名都称为标识符。
-
由字母(A-Z,a-z)、数字(0-9)、$、下划线“_”组成,并且首字母以字母、$、下划线开始,不可以是数字
-
标识符不可以以关键字命名
-
标识符大小写敏感
3、关键字
有特别意义的标识符,如下:
abstract | assert | boolean | break | byte | case | catch | char |
continue | default | do | double | else | instanceof | for | goto |
extends | final | float | import | finally | enum | int | interface |
new | package | private | protected | public | return | strictfp | short |
static | super | class | const | if | implements | long | native |
switch | synchronized | throw | throws | transient | try | void | volatile |
while | this |
4、数据类型
Java是一个强类型语言,变量的使用严格符合规定,所有变量都必须先定义后使用。
4.1 八大基本类型
-
整数
4.1.1、byte:1个字节,8位数,取值范围:-128 到 127
byte num1 = 10;
4.1.2、short:2个字节,取值范围:-32768 到 32767
short num2 = 20;
4.1.3、int:4个字节,取值范围:-2^31 到 2^31-1
int num3 = 30;
4.1.4、long:8个字节,取值范围:-2^63 到 2^63-1
long num4 = 40L;
-
整数扩展
二进制:0b 表示
int i1= 0b10;
八进制:0表示
int i2 = 010;
十六进制:0x表示
int i4 = 0x10;
-
浮点数
4.1.5、float:4个字节,取值范围:-2^128 到 2^128
float num5 = 1.66F;
4.1.6、double:8个字节,取值范围:-2^1024 到 2^1024
double num6 = 2.345686365;
-
浮点数扩展
浮点数是有限的、离散的,所以在计算无限的数值时结果是一个接近于真实值但不等于真实值的大约数,存在舍入误差,应当用 BigDecimal,可以精确地进行计算
-
字符
4.1.7、char:2个字节,取值范围:0~65536
char code = 'A';
-
字符扩展
Unicode编码
转义字符:定义了一些字母前加 \ 来表示常见的那些不能显示的ASCII字符
常用转义字符
-
\b:退格(BS) ,将当前位置移到前一列
-
\f:换页(FF),将当前位置移到下页开头
-
\n:换行(LF) ,将当前位置移到下一行开头
-
\r:回车(CR) ,将当前位置移到本行开头
-
\t:水平制表(HT) (跳到下一个TAB位置)
-
\v:垂直制表(VT)
-
\?:代表一个问号
-
反双斜杠:代表一个反斜线字符 \
-
\ + ‘:代表一个单引号(撇号)字符
-
\ + “:代表一个双引号字符
-
\0:空字符(NUL)
-
-
布尔值
4.1.8、boolean:1位,true或者false
boolean flag1 = true;
boolean flag2 = false;
4.2 引用类型
除了基本类型,其他的数据类型都是引用类型,如类、接口、数组
4.3、类型转换
-
起因:运算中,不同数据类型的数据必须先转换成同一类型,然后才能进行运算
-
自动转换:按顺序 byte,short,char–>int–>long–>float–>double 由低到高,可以自动转换
//int型转换成long型
int numA = 10;
long numB =numA;
-
强制转换:由高到低,必须强制转换
//语法:(要转换的类型)数字
//long型转换成int型
int numD = (int)10L;
-
注意点
-
内存溢出
超出类型的数值范围时会出现内存溢出问题
//内存溢出及解决办法
int money = 10_0000_0000;
int years = 20;
int total1 = money * years;
System.out.println("total1 = " + total1);
//把结果转换成长整型long试试能不能解决问题
long total2 = (long)money * years;
System.out.println("total2 = " + total2);
//解决办法:先把要计算的其中一个数转换成长整型long
long total3 = (long) money * years;
System.out.println("total3 = " + total3); -
精确问题
把浮点数转换为整数会舍弃小数部分,造成数据丢失
float f1 = 1.11F;
double d1 = -26.5698;
int int1 = (int)f1;
int int2 = (int)d1;
System.out.println(int1);//输出结果为1
System.out.println(int2);//输出结果为-26 -
不能对Boolean值进行转换
-
5、常量、变量、作用域
5.1、常量
初始化之后不能再改变值,在程序运行期间不能改变其值!用final修饰常量
final int i = 10;
5.2、变量
顾名思义,初始化之后可以改变值的量,变量是程序中最基本的储存单元,其要素包括变量类型,变量名,作用域
-
定义:
//数据类型 变量名 = 变量值;
//数据类型 变量名 = 变量值,变量名 = 变量值,变量名 = 变量值;(不推荐使用)
int a = 0;
String str = "Java";
-
注意点:
-
变量类型可以是基本类型,也可以是引用类型
-
变量名必须是合法的标识符
-
变量定义后必须以分号结尾
-
5.3、变量作用域
-
局部变量
写在方法里的,只在当前方法里生效,必须声明和初始化值
//add方法
public void add(){
//局部变量
int a = 6;
System.out.println(a);
} -
成员变量
从属于对象,在整个类中有效,可以不初始化值,有默认值(0、0.0、null、false)
public class VariableConstantScope {
//成员变量
String name;
int age;
public static void main(String[] args) {
//成员变量的调用
VariableConstantScope vCScope = new VariableConstantScope();
System.out.println(vCScope.age);
System.out.println(vCScope.name);
}
} -
类变量
从属于类,用static修饰,随着类的存在而存在,类的消失而消失
//类变量
static String str = "Java";
5.4、变量的命名规范
-
所有变量、方法、类名:见名知意
-
常量:大写字母和下划线
-
类成员变量、局部变量、方法名:小驼峰式命名法(除了第一个单词以外,后面的单词首字母大写)
-
类名:大驼峰式命名法(每一个单词的首字母都采用大写字母)
6、基本运算符
运算符存在优先级,可以多用括号把想计算的东西括起来,提高优先级
6.1、算术运算符
-
+(加)、-(减)、*(乘)、/(除)、%(求余)、++(自增)、–(自减)
-
运算中,结果为这些数中最高等级的数据类型,有long类型的结果就为long,有double类型的结果就为double,但是byte和short相加结果为int类型
byte num1 = 10;
short num2 = 20;
int num3 = 30;
long num4 = 40;
double num5 = 50.00;
System.out.println(num5 + num4 + num3 + num2 + num1);//结果为double型150.0
System.out.println(num4 + num3 + num2 + num1);//结果为long型100
System.out.println(num3 + num2 + num1);//结果为int型60
System.out.println((num2 + num1));//结果为int型30
-
注意自增++、自减–运算
-
++a:表示把变量 a 的值加 1 后的值作为该表达式的值,同时变量 a 本身的值加 1
-
–a:表示把变量 a 的值减1 后的值作为该表达式的值,同时变量 a 本身的值减1
-
a++:表示先直接把变量 a 原来的值作为该表达式的值,然后变量 a 本身的值加 1
-
a++:表示先直接把变量 a 原来的值作为该表达式的值,然后变量 a 本身的值减 1
-
6.2、赋值运算符
-
=
int a = 1;//意思就是把1赋值给a
-
扩展:+=、-=、*=、/=
6.3、关系运算符
( >(大于)、<(小于)、>=(大于等于)、<=(大于等于)、==(等于)、!=(不等于))
6.4、逻辑运算符
&&(与)、||(或)、!(非)
-
扩展:短路运算
-
a && b,与操作,如果a为false,则直接返回false,不判断b的真假
boolean a1 = false;
boolean a2 = true;
int b = 1;
//a1为false,++b<0为真
System.out.println((a1 && (++b>0)));
//b的结果为1,说明b根本没有进行自增运算
System.out.println(b);
-
a || b,或操作,如果a为true,则直接返回结果为真,不判断b的真假
boolean a1 = false;
boolean a2 = true;
int b = 1;
//a1为true,++b<0为假
System.out.println((a2 || (++b<0)));
//b的结果为1,说明b根本没有进行自增运算
System.out.println(b);
-
6.5、位运算
&(按位与)、|(按位或)、^(按位非)、~(按位异或)、>>(左位移运算符)、<<(右位移运算符)、>>>(无符号右移运算符),这些都是按二进制的八位数运算的
0100 1010 &(两个都为1,结果为1)
0010 1001
结果为:0000 1000
0100 1010 | (有一个为1,结果为1)
0010 1001
结果为:0110 1011
^0010 1001 (取反)
结果为: 1101 0110
0100 1010 ~ (相反为1,相同为0)
0010 1001
结果为:0110 0011
0010 1001 >> (向右移一位数)
结果为:0001 0100
0010 1001 << (向左移一位数)
结果为:0101 0010
-
扩展:2*8 怎么运算最快?
2<<3,计算出来的结果为16,>>相当于 /2,<<相当于 *2
6.6、条件运算符
x ? y : z//如果x为真,结果为y,否则结果为z
7、包机制
-
用于区别类的命名空间
-
一般用公司域名倒置作为包名
-
使用import导入其他的包进行使用
-
import package1[.package2…] .classname;
-
import package1[.package2…] .;( *是通配符,意思是导入这个包下所有的类)
-
笔记内容均为自己看大神【狂神说Java】的视频整理的,给狂神点赞