1、数据类型与变量
1.1 数据类型
8种基本数据类型 数值型:byte、short、int、double、float、long、char;布尔型:boolean
3种引用数据类型:数组、类、接口
数据类型 | 占用内存 |
---|---|
整数型(int) | 4字节 |
短整数型(short) | 2字节 |
长整数型(long) | 8字节 |
字节型(byte) | 1字节 |
浮点型(float) | 4字节 |
双精度型(double) | 8字节 |
布尔型(boolean) | 1字节 |
字符型(char) | 2字节 |
1.2、标识符:
规则: (包、类、参数、方法、变量等要素命名时使用的字符成为标识符)
1、由字母、数字、下划线(_)和美元符号($)组成
2、不能以数字开头
3、区分大小写
4、长度无限制
5、不能是Java中的保留字
1.3、数据类型转换
ps:boolean类型不能转换成任一数据类型
1、自动类型转换:
容量小的类型转换为容量大的类型
byte、short、int->float->long->double
byte、short、int三者不会相互转换,在计算的时候会自动转换成int类型
2、强制类型转换
容量大的数据类型转换成容量小的数据类型,需要加上强制转换符。ps:转换可能造成精度降低以及数据溢出。
问题:1、定义一个float类型数据时,如float f1=10.1;
10.1的类型数据默认是int类型,但是10.1实际上不是一个整形数据,会报错。那么我们在定义的时候需要在10.1后面加上f,表明10.1是一个float类型数据。同理,在定义long类型数据也是需要加上一个l,表明定义的是一个long类型数据。
2、char类型在定义过程中需要赋初值的时候使用单引号(’ '),其实char类型在计算机中存储的也是数值,所以被归类为数值类型。按照ASCII码记录的数值存入计算机内。
2、方法
方法是用于封装具有一定逻辑功能的程序代码片段。
方法格式是:权限修饰符 返回值类型 方法名(参数列表){
逻辑功能;
return 返回值;
}
public class Demo01 {
public static void main(String[] args) {
say();
}
public static void say(){
System.out.println("HelloWorld");
}
}
问题:根据方法格式写方法应该是
public void say(){ System.out.println("HelloWorld"); }
在主函数里面实现方法的时候发现会报Non-static method ‘say()’ cannot be referenced from a static context错误
原因在于主函数是static的。加载较早。解决方法:我们在say方法前也加上一个static,让say方法和main函数同时加载,这样就能解决问题了。
3、运算符
3.1、算术运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(余) |
++ | 自增(前、后) |
– | 自减(前、后) |
public static void main(String[] args) {
//3、1 算术运算符
int a = 4;
int b = 3;
int d=a%b;
System.out.println(d);// 1
System.out.println(d++);//1 ++在后面就是执行完再++
System.out.println(++d);//3 ++在前面就是执行前++
}
3.2、赋值运算符
运算符 | 描述 |
---|---|
= | 赋值 |
+= | 加等(a+=b)与( a=a+b)等价 |
-= | 减等(a-=b)与( a=a-b)等价 |
*= | 乘等(a*=b)与( a=a*b)等价 |
/= | 除等(a/=b)与( a=a/b)等价 |
%= | 模等(a%=b)与( a=a%b)等价 |
3.3、关系运算符
运算符 | 描述 |
---|---|
== | 相等于 |
!= | 不等于 |
< | 小与 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
3.4、逻辑运算符
运算符 | 描述 |
---|---|
& | 逻辑与 |
| | 逻辑或 |
^ | 异或 |
&& | 短路与 |
|| | 短路或 |
! | 非 |
//3.4 逻辑运算符
int a = 4;
int b = 5;
//异或
System.out.println(a^b);//a的二进制码是0100 b的二进制码是0101 异或成为0001 (异或表示如果数字相同则0,不同则为1)
//与
System.out.println(a>b & b>a);//false
//或
System.out.println(a>b | b>a);//true
//短路与 和 与 的区别是 短路与如果前面条件为false则后面条件不需要看了 直接为false
System.out.println(a>b && b<a);//false
//短路或 和 或 的区别是 短路或如果前面条件为true则后面条件不需要看了 直接为true
System.out.println(b>a || b<a);//true
//非 取反
System.out.println(!(a>b));//true
3.5、字符串连接符
//3.5、字符串连接
String text1="hello world";
String text2="Java";
String text3=text1+text2;
System.out.println(text3);
3.6、三目运算符
三目运算符格式:表达式?表达式为真时的值:表达式为假时的值
//3.6、三目运算符
int a = 10;
int b = 20;
System.out.println(a>b?123:456);//如果a>b则输出123,如果a<b则输出456,当前输出456
4、转义字符
转义字符 | 意义 |
---|---|
\n | 换行,将当前位置移到下一行开头 |
\r | 回车,将当前位置移到本行开头 |
\t | 水平制表,移到下一个tab位置 |
\v | 垂直制表 |
\ | 代表一个反斜字符 |
’ | 代表一个单引号 |
" | 代表一个双引号 |
5、作用域
作用域可以表示为变量的使用范围,分为成员变量(也被称为全局变量)和局部变量。局部变量只被允许定义的类使用。
2021年8月15日