Java 基本知识——first day
注释不会被执行,是写给看代码的人看的。
单行注释
多行注释
文档注释
标识符
关键字
Java常见的关键字
考点
总结四个点:
-
首字母应该以字母、$、_开始;
-
开始后可以任意字符;
-
不可用关键字
-
大小写敏感
数据类型
Java是一门强类型语言
强类型语言
比如Java、C++、C
变量定义严格,先定义才能使用。
弱类型语言
比如VB、JS、Python
Java的两大类数据类型
基本类型
Java语言提供了八种基本类型:
-
四个整数型;
-
两个浮点型;
-
一种字符型;
-
布尔
数值类型
整数类型
-
byte占1个字节
-
-128(-2^7)
-
127(2^7-1)
-
-
short占2个字节
-
-32768(-2^15)
-
32767(2^15 - 1)
-
-
int(整型)占4个字节
-
-2,147,483,648(-2^31)
-
2,147,483,647(2^31 - 1)
-
-
long(长整型)占8个字节。
-
-9,223,372,036,854,775,808(-2^63)
-
9,223,372,036,854,775,807(2^63 -1)
-
浮点数类型
-
float(单精度)占4个字节
-
储存大型浮点数可节省空间。
-
-
double(双精度)占8个字节
-
默认类型
-
字符类型
-
char(字符型)占2个字节
-
String(字符串)他不是一个关键字,是一个类
布尔类型
-
boolean(布尔类型)
-
只能存储true和false。
-
引用类型
除了基本类型之外的所有数据类型,都是引用类型。
类;接口;数组。(后续专栏讲解)
拓展
整数进制
常规使用的基本数据类型为10进制:
而Java程序中,可以对变量赋值为各种进制。
//默认十进制,二进制为0b,八进制为0,十六进制为0x
public class binary {
public static void main(String[] args) {
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}
输出结果为:
浮点数特性
由于浮点数具备以下特征:
-
有限性;
-
离散性;
-
舍入误差;
-
大约;
-
接近但不等于。
所以我们在实际使用中,要尽量避免使用浮点数进行数值之间的比较。
案例1:两个相同的数值进行比较得false
代码如下:
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);
输出结果得:
使用调试查询变量数值:
两个数值都相同,但输出结果为false。
案例2:过长数值+1,依然等于原数值
代码如下:
float d1=213213213213213213f;
float d2=d1+1;
System.out.println(d1==d2);
输出结果为:
使用调试查询变量数值:
可以看见,浮点数值一但过大,则会直接修改表示形式,就无法对比数值大小了。
解决方案(BigDecimal)
如果涉及浮点数比较大小,最好使用 数据类 BigDecimal 数学工具类。
字符拓展
字符
所有的字符,本身都是Unicode、ASCII码
Unicode(0~65536,2^16)
代码如下:
char a='a';
char A='A';
char B='B';
System.out.println("a="+(int)a);
System.out.println("A="+(int)A);
System.out.println("B="+(int)B);
运行结果如下:
转义字符
除此之外,字符还具备转义字符的含义,一般可用在如下场景:
-
需要插入一些关键性的文字;
-
需要插入一些空格、回车,等特别的字符。
代码如下:
System.out.println("中间是空格转义符→\t←");
输出结果:
类型转换
Java运算中,不同类型的数据先转化为同一类型,然后再进行运算。
数据类型优先级
强制类型转换
代码如下:
public class type_Convert {
public static void main(String[] args) {
int i=128;
byte b= (byte) i;//因为最大值是127,当128的时候就是补码
System.out.println(i+"\n"+b);
}
}
输出结果如下:
加个括号的形式,就是强制转换,从数据类型的高到低,就需要强制转换。
反之,从低到高就采用自动转换。
自动类型转换
代码如下:
int o=123;
double j=o;
扩展补充
-
不能对布尔类型进行转换。
-
不能把对象类型转换为不相干的类型。
-
在把高容量转换到低容量的时候,强制转换。
-
转换的时候可能存在内存溢出和精度问题,转换后会除去掉小数部分。
-
JDK7 的新特性,数字之间支持用下划线分割。
int q=10_0000_0000;
System.out.println(q);
输出结果:
1000000000
变量
定义:可变化的量
-
每个变量都必须声明其类型;
-
是最基本的存储单元,其要素包含变量名、变量类型和作用域。
变量定义:
int i = 1;
String i = 2;
//int、String 变量类型
// i 就是变量名称
作用域
类变量:
-
从属与类,可以直接使用类名调用的变量
-
作用范围全局
public class action_Scope {
//类变量:从属与类,可以直接使用类名调用的变量。
static double salasy;
public static void main(String[] args) {
//类变量的调用
action_Scope.salasy=200D;
System.out.println(action_Scope.salasy);
}
}
输出结果:
200.0
实例变量
-
从属与对象:如果不自行初始化,这个变量则自动唯默认值 0 0.0
-
布尔变量为true,除了基本类型,其他的引用类型都是null
-
-
作用范围,new 实例。
public class action_Scope {
//实例变量:从属与对象:如果不自行初始化,这个变量则自动唯默认值 0 0.0
//布尔变量为true,除了基本类型,其他的引用类型都是null
String name;
int age;
public static void main(String[] args) {
//实例变量的调用
action_Scope action_scope=new action_Scope();
System.out.println(action_scope.age);
}
}
输出结果:
0
null
局部变量
-
作用范围,方法内部
public class action_Scope {
public static void main(String[] args) {
//局部变量:必须声明和初始化数值
int i = 10;
System.out.println(i);
}
}
输出结果:
10
常量
一但定义了,就不会变化的量。
public class Demo1 {
//修饰符不区分先后顺序。
final static double PI=3.14;
static final double π=3.14;
}
命名规范
-
所有变量、方法、类名:见名知意;
-
变量、方法:首字母小写和驼峰原则:mounthSalary
-
除了第一个单词,后面的单词首字母大写
-
-
常量:全大写字母,多个单词使用下划线隔开。
-
MAX_VALUE
-
-
类名:首字母大写,驼峰原则
运算符
-
自增、自减,也可以叫做一元运算符
-
a++和++a的区别在于,先执行再++和先++再执行
-
很多运算我们会使用Math工具类进行操作
短路运算
-
当与预算时,如果前者为假,就不会继续向后执行代码了
-
或运算时,如果前者为真,则不会继续执行后面的代码
位运算
位运算就是将变量与变量用二进制的形式进行 与或非 的计算,一般计算IP地址和子网掩码可用使用位运算
面试题:2乘以8怎么运算最快?
利用位运算符,可以根据变量的二进制数值进行移动
优点是运算效率极高(直接是底层机器语言)。
三元运算符
代码:
int en= a<10?20:30;
System.out.println("三元运算符:"+en);
输出:
三元运算符:30
字符串连接符
问:以下两种代码写注方式,有什么区别?
int a=10;
int b=20;
System.out.println(""+a+b);
System.out.println(a+b+"");
输出:
1020
30
答:当一串运算语句中,出现String类型,之后的所有+号,都会被认为是字符串连接符。
优先级
优先计算括号。
包机制
包的本质就是一个文件夹。
包的结构必然是和网址相反的。
JavaDoc
用于生成API文档,开发时极其有用。
可以通过doc命令行,在当下目录,输入代码:
javadoc -encoding UTF-8 -charset UTF-8 [.java文件的路径]
快速生成相关的Java文档。
### 部分截图取自,B站UP:遇见狂神说;菜鸟教程
热门相关:最强狂兵 朕是红颜祸水 夫人你马甲又掉了 朕是红颜祸水 惊世毒妃:轻狂大小姐