java学习笔记(一)
一、标识符
java的所有组成部分都需要名字。类名、变量名以及方法名都被成为标识符。标识符命名规则如下:
- 所有标识符都以以A-Z或者a-z,美元符号$,或者下划线_ 开始;
- 首字符之后可以是 以A-Za-z,美元符号$,或者下划线_,或者数字 的组合;
- 标识符是大小写敏感的;
- 合法的标识符:Alee,¥lee,_lee,$_lee;
- 非法的标识符:123,-lee,#lee;
二、java数据类型
- java是强类型语言:要求变量的使用严格符合规定,所有变量都必须先定义之后才能使用。安全性较高,但性能较弱类型语言低。
- java的基本数据类型分为两大类:基本类型以及引用类型。注:String不是基本数据类型,是一个类,为引用类型。
如下
3. 位、字节、字符。
- 位(bit):是计算机 内部数据存储的最小单位,11001100是一个八位二进制数;
- 字节(byte) 是计算机中数据处理的基本单位,习惯上用大写B来小表示:
- 1 B ( byte 字节) = 8 b(bit 位)
- 字符:是指计算机中使用的字母、数字、符号。
三、java数据类型拓展
1.整数:
二进制以0b开头,八进制以0开头,十六进制以0x开头;
int i= 10; //输出 10;
int i2= 010; //八进制,输出 8
int i3= 0x10; //十六进制,输出16
2.浮点数
单精度浮点型(float)采用32个比特位存储一个浮点数,存储的位数有限,因此会采用一个近似数表示该数,由于舍入误差,所以无法精确表示该数,最后存储的是一个接近但不等于原始数据的数。
float f= 0.1f; //0.1;
double d= 1.0/10; //0.1
System.out.println(f==d); //false
float f1= 23131916743261932f;
float f2= f1+1;
System.out.println(f1==f2); //true
//避免完全使用浮点数进行比较,用Bigdecimal
3.字符类型
- 所有字符类型本质是数字,char类型可强制转化成int类型;
- 统一码(unicode):为每种语言中的每个字符设定了统一并且唯一的二进制编码,
char c1='A';
char c2='中';
System.out.println((int) c1); //强制转换,输出a在unicode表中的序号65
System.out.println((int) c2); //强制转换,输出'中'在unicode中的序号20013
char c3= '\u0061';
System.out.println(c3); //输出a
- 转义字符
转义字符 | 意义 |
---|---|
\a | 响铃 |
\b | 退格 |
\f | 换页(从当前位置移到下一页开头) |
\n | 换行,从当前位置移到下一行开头 |
\r | 回车,将当前位置移到本行开头 |
\t | 水平制表(HT) (跳到下一个TAB位置) |
\ | 代表一个反斜线字符’’' |
’ | 代表一个单引号(撇号)字符 |
" | 代表一个双引号字符 |
- 布尔类型
boolean bool=false;
if(bool==true){}; //判断bool是否为true,bool为false不为true,输出false
if(bool){}; //等同于判断bool是否为true
四、类型转换
1.基本数据类型
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节类型 | byte | 1B(8bit) | -27 ~ 27-1 |
短整形 | short | 2B(16bit) | -215 ~ 215 -1 |
整型 | int | 4B(32bit) | -231 ~ 231 -1 |
长整型 | long | 8B(64bit) | -263 ~ 263 -1 |
单精度浮点型 | float | 4 字节 | +/-3.4E+38F(6~7 个有效位) |
双精度浮点型 | double | 8 字节 | +/-1.8E+308 (15 个有效位) |
字符型 | char | 2 字节 | ISO 单一字符集 |
布尔型 | boolean | 1 字节 | true 或 false |
2.java类型转换
//**1. byte,short,char -> int -> long -> float -> double**
//2.从低到高为自动类型转换,
//3.从高到低需要进行强制类型转换,可能发生溢出现象或者精度问题
//4.布尔类型不能进行转换
int i=128;
byte b=(byte) i;
System.out.println(i); //输出128
System.out.println(b); //输出-128
int money=10_0000_0000;
int year=20;
int total=money*years; //输出-1474836480
long total2=money*(long)money; //输出200_0000_0000;
五、变量、常量
1.变量:
java是强类型语言,所有变量都必须声明其类型。
java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
1. 每个变量都有类型,类型可以是基本数据类型,也可以是引用类型;
2. 变量名必须是合法的标识符;
3. 声明变量必须是一条完整的语句,因此每一个声明都必须以分好结束。
2.变量类型
public class demo{
//类变量 static关键词
static double salary=2500;
//实例变量:从属于对象,如果不自动初始化,则为该类型的默认值;
//布尔值默认为falase;除了基本类型以外,其余的默认值为null;
String name; //输出null
int age; //输出0
//main方法
public static void main(String[] args){
//局部变量,必须声明和初始化值
int i = 10;
System.out.println(i);
}
}
3.常量(Constant)
含义:初始化之后不能再改变的值,在程序运行过程中不允许被改变。可以理解成一种特殊的变量。
final 常量名 = 值;
final double PI = 3.14;
4.变量的命名规范
- 所有的变量、方法、类名:见名知意
- 类成员、局部变量:首字母小写和驼峰原则:monthSalary
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun();
六、修饰符及其可见域
- public修饰的成员可以在任何范围内直接访问,只是一种最宽松的访问控制等级。需要注意的,所谓的直接访问仍需要先创建或获得一个相应类的对象然后才可以使用”对象名.成员“的方式访问其属性或调用其方法,但是出于信息封装和隐藏的需要一般不提倡把成员声明为public的,而构造方法和需要外界直接调用的普通方法则适合声明为public.
- protected修饰的成员可以在其所在类中、同一包中及子类中(无论子类在不在同一个包)被直接访问,但不能在位于不同包中的非子类中被直接访问,这里需要特别声明:在位于不同包的子类中必须是子类的对象才能直接访问其父类的protected成员,而父类自身的对象反而不能访问其所在类中声明的protected成员。下面我就一个例子说明它:
package p1;
public class A{
public int m = 5;
protected int n = 6;
}
package p2;
import p1;
public class B extends A{
public void mb(){
m = m + 1;
n = n * 2;
}
public static void main(String[] args){
B b = new B();
b.m = 7; //合法
b.n = 8; //合法
A a = new A();
a.m = 9; //合法
a.n = 10; //不合法
}
}
- 缺省访问修饰符的成员只能在其所在类中或包中直接访问,在不同包中即使是不同包的子类也不能直接访问。
- private成员只能在所在类中被直接访问,是4种访问等级最高的一个。
七、运算符
运算符 | |
---|---|
算术运算符 | +,-,*,/,%,++,– |
赋值运算符 | = |
关系运算符 | >,<,>=,<=,==,!=,instance of |
逻辑运算符 | &&, |
位运算符 | &, |
条件运算符 | ?: |
1:%:余数和被除数的±符号保持一致
2:instance of:左边是对象,右边是类,当左边对象等于右边类或者为右边类的子类时,返回true,否则返回false
3:逻辑数据运算符,返回true或false
4:为运算符,将数据转化成二进制,在位上进行与或非操作
5:" “+a+b为字符a拼接b,a+b+” "对a,b进行和计算
doc文档
通过命令行生成doc文档:
javadoc -encodeing UTF-8 -charset UTF-8 java文件
参考:
[1]https://www.bilibili.com/video/BV12J41137hu?p=27
[2]https://blog.csdn.net/zhazhaniaohehe/article/details/44960899