强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
弱类型语言
Java的数据类型分为两大类
基本类型(primitive type)
引用类型(reference type)
[截图]([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wqm6Vwef-1615131278111)(C:\Users\C\Pictures\Apowersoft\Apowersoft Screen Capture Pro\screenshot_20210307_164303.png)])
什么是字节
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位数二进制
字节(byte):是计算机中 数据处理的基本单位,习惯上用大写B来表示
1B(byte,字节)=8bit(位)
字符:是指计算机中使用的字母,数字,字和符号
1bit表示1位,
1Byte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
类型转换
强制转换(类型)变量名 高-----低
自动转换 低--------高
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量时,强制转换
-
转换的时候可能存在内存溢出,或者精度问题!
//操作比较大的数时,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money=10_0000_0000;
int years=20;
int total=money*years;//-1474836480,计算的时候溢出了
long total1=money*years;//运算是默认是int,转换不了
System.out.println(total);
System.out.println(total1);
long total2=money*(long)years;//先把一个数转换为long
System.out.println(total2);
// L l 转换long类型时,小写的l容易看错,尽量用大写的L
变量
变量是什么:就是可以变化的量
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项
每个变量都有类型,类型可以是基本类型,也可以是引用类型
变量名必须是合法的标识符
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
类变量 加了static关键字,从属于类 ,随时随地调用,随着类一起加载,一起消失
实例变量:从属于对象;如果不自行初始化,就是这个类型的默认值
布尔值:默认是false
除了基本类型,其余的默认值都是null
局部变量:必须声明和初始化值
public class HelloWorld {
static int allClicks=0; //类变量
String str="hello world"; //实例变量
public void method(){
int i=0; //局部变量
}
}
常量
常量(constant):初始化(initialize)后不能再改变值!不会变动的值
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
public class HelloWorld {
//修饰符,不分先后顺序
static final double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
常量名一般使用大写字符。
变量的命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run(),runRun()
运算符
Java语言支持如下运算符
算数运算符:
+,-,*,/,%,++,–
public class Demo01 {
//ctrl+d 复制当前行到下一行
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a=3;
int b=a++;//执行完这行代码后,先赋值给b,再自增
int c=++a;//执行完这行代码前,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2=8 很多运算会使用一些工具类来操作
double pow=Math.pow(2,3);//2的3次方
System.out.println(pow);
}
}
赋值运算符
=
关系运算符:
<,>=,<=,==,!=,instanceof
逻辑运算符:
&&,||,!
//逻辑运算符
public class Demo02 {
public static void main(String[] args){
//与(and) 或(or) 非(取反)
boolean a=true;
boolean b=false;
System.out.println(a && b);//false 逻辑与运算:两个变量都为真,结果才为true
System.out.println(a||b);//true 逻辑或运算:两个变量有一个是真,则结果才为true
System.out.println(!(a && b));//true 如果是真,则变为假,如果是假则变为真
//短路运算 判断是否存在短路
int c=5;
boolean d=(c<4)&&(c++<4);
//c<4为true 如果短路,就不会执行后面 如果不短路那么语句执行完后c的值为6
//++c 是先与4判断,结束了才自增
System.out.println(d);//false
System.out.println(c);//5 c没有自增,说明后面的语句没执行
}
}
位运算符:
&,|,^,~,>>,<<,>>>
public static void main(String[] args) {
/*
* A = 0011 1100
* B = 0000 1101
* -----------------
* A&B= 0000 1100 A与B 如果两边都为1则为1,否则为0
* A|B= 0011 1101 A或B 如果对应为都是0结果为0,否则为1
* A^B= 0011 0001 A亦或B 如果这两个位置相同则为0,否则为1
* ~B=1111 0010 非B 跟B完全相反
*
* 2*8=16 2*2*2*2
* System.out.println(2<<3); //16
* 位运算效率极高
* << *2
* >> /2
*
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
* 0001 0000 16
* */
}
条件运算符
?:
//三元运算符
public class Demo05 {
public static void main(String[] args) {
//x?y:z
//如果x==true,则结果为y,否则结果为z
int score=80;
String type=score>=60?"及格":"不及格";
System.out.println(type);//及格
}
}
扩展赋值运算符:
+=,-=,*=,/=
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a = a+b 30
a-=b;//a = a-b -10
System.out.println(a);
//字符串连接符
System.out.println(a+b);//30
//只要其中有String,就会把它们转换成字符串进行拼接
System.out.println(""+a+b);//1020
//如果字符串在前面,后面的值会进行拼接,如果在后面,前面的依旧会进行运算
System.out.println(a+b+"");//30
}