1.常量与变量
在程序设计语言中,对于数据的储存,都是以常量或变量的形式存在
常量:不可改变的数据
变量:可以改变的数据
1.1常量
Java中常量的形式分两种:
1.直接量(字面量):未经定义,直接使用的数据值
System.out.print("hello world!");
System.out.print(15);
2.自定义常量:使用final关键之修饰的
final double PI = 3.1415926;
1.2变量
在内存中开辟一块存储空间,声明两个值:存储的数据类型,存储的空间名称
int number = 15;
//数据类型 变量名 = 初始值;
1.2.1变量的分类
局部变量:在方法做声明的变量,对当前类所有位置生效
全局变量:在类中方法外声明的变量,对当前类所有位置生效
public class Variable {
static int c = 50; //全局变量
public static void main(String[] args) {
final int a = 10; //定义常量
//a = 20;
//局部变量
int b = 30;
b = 40;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
public static void m1(){
System.out.println(c);
}
}
2.数据类型
2.1基本数据类型
2.1.1整形
类型名称 | 所占字节大小 | 取值范围 |
byte | 1字节 | -128~127 |
short | 2字节 | -2的15次方~2的15次方-1 |
int | 4字节 | -2的31次方~2的31次方-1 |
long | 8字节 | -2的63次方~2的63次方-1 |
整形类型的使用场景:
1.进行文件读写的时候,使用byte
2.对于较大的整数,例如毫秒,需要使用long
3.大部分时候使用int
*注意*
java默认整形是int
long类型后面要跟L
2.1.2浮点型
类型名称 | 所占字节大小 | 取值范围 |
float | 4字节 | -3.40E38~3.40E38 |
double | 8字节 | -1.798E308~1.798E308 |
*注意*
使用floa声明小数的时候,末尾要加F
小数进行直接运算有bug,结果不精确
Infinity 正无穷
-Infinity 负无穷
NaN 不是一个数字
public class Next1 {
public static void main(String[] args) {
double a1 = 19.8;
double a2 = 16.8;
double a3 = -16.8;
double a4 = 0;
System.out.println(a1*a2); //计算不精确
System.out.println(a1/0); //infinity
System.out.println(a3/0); //-infinity
System.out.println(a4/0); //NAN (没有这个数)
}
}
2.1.3字符型
Java中表示单个字符的类型为char,字符型需要使用单引号(‘ ’),区别String(“ ”),String的本质也是一个char类型的数组(序列)
char类型可以表示一个字符、一个字母、一个数字,占据两个字节
不加单引号的数字,自动转为ASCII编码
public class next {
public static void main(String[] args) {
char a = 4111; //ASCII编码
System.out.println(a);
char b = '&'; //&
char c = '6'; //6
char d = '男'; //男
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
十六进制可以表示为unicode编码,前面需要加转义字符
\u十六之子表字符,自动转为unique编码
\n 换行 \t 空格
2.1.4布尔型
布尔型只有两个值:真或假 true/false
他是基本数据类型中所占空间最小的数据类型,只占一个二进制位
public class next {
public static void main(String[] args) {
boolean a = 8>9;
System.out.println(a);
}
}
*练习*
使用声明变量打印
姓名 性别 年龄
张飞 男 77
貂蝉 女 44
public class Next {
public static void main(String[] args) {
System.out.println("姓名"+"\t"+"性别"+"\t"+"年龄"+"\n"+
"张飞"+"\t"+"男"+"\t"+"77"+"\n"+
"貂蝉"+"\t"+"女"+"\t"+"44");
}
}
2.2引用数据类型
String 字符串型,它是由Java.lang爆为我们提供的一个类,底层维护的依然是char类型的数组
除了八大基本数据类型以外所有的数据类型都是引用数据类型
除了八的基本数据类型,我们还需要表示一些比较复杂的数据,比如一个学生(姓名、性别、年龄、身高、体重、吃饭、睡觉、打游戏),所以我们需要一个引用数据类型来标示这样一些比较复杂的数据
2.3数据类型的转换
数据类型的转换遵循以下原则:
小转大 直接转 隐式转换
大转小 手动转 显示转换 (类型名)变量名
大的转小的数据类型,要保证不能超出取值范围,否则数值不准确
3.运算符
+ 加
- 减
* 乘
/ 除
% 取模
+ + 自增 a++是先使用在运算,++a是先运算在使用
- - 自减 a- -是先使用在运算,- -a是先运算在使用
3.2关系运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于等于
!= 不等于
使用关系运算符得到的结果都是布尔值
3.3布尔运算符
& 与
| 或
! 非
&& 短路与,前面一个是假的结束判断,都为假
|| 短路或,前面一个是真的结束判断,都为真
3.4位运算符
^ 异或 必须一真一假才为真
<< 左移 先把数字转为二进制,把高位向左移,低位补零;2<<2
>> 右移 先把数字转为二进制,把高位向右移,高位补零;8>>2
3.5三目运算符
条件?语句一:语句二
判断这个条件,满足时执行一,不满足执行二
3.6其他运算符
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 模等于
3.7运算符优先级
需要先进性运算的括号括起来
4.方法
4.1表达式
声明一个变量
int a = 10;
调用一个对象的方法或属性
stu.name
4.2代码块
用花括号括起来的一段可执行代码
{
int a = 35;
int b = 44;
Sytem.out.print(a+b)
}
4.3方法的定义
修饰符 返回值 方法名 ([参数列表]){
可执行代码块
}
public static void m1(){
System.out.println("Hello!");
}
使用方法的好处:
代码可重用。避免代码冗余
public 资源访问权限(公共的)
static 修饰为静态资源,让主方法可以直接调用
void 返回值(无返回值)
m1 方法的名称
() 参数列表(无参)
{} 可执行代码块
方法的返回值
void 代表方法没有返回值,没有ruturn返回
如果有返回值,则需要写出相应的数据类型
方法的参数列表
参数可以有n个,每个参数都必须定义数据类型
在调用方法是,参数的个数,参数的类型,必须一 一对应
方法的种类
public class Next {
public static void m1(){
System.out.println("Hello");
} //无参无返回值
public static int m2(int i){
return i; //有参有返回值
}
public static void m3(String i){
System.out.println(i); //有参无返回值
}
public static String m4(){
return "你好"; //无参有返回值
}
public static void main(String[] args) {
m1();
m2(55);
m3("ssss");
m4();
}
}
方法的调用
在main方法中,调用被static修饰的方法,可以直接写方法名加参数列表,实现调用
若方法没有被static修饰,则不能直接调用,需要先new对象,通过对象名称来调用
Math.random();