一. 基本数据类型
首先我们要知道位和字节的概念,所谓的位,就是计算机中最小的单位,8位=1个字节
数据类型有八个,分别是 byte、short、int、long、float、double、boole、char这八个,整数和小数的基本数据类型可以自由转换,比如int转换成long不会出现什么问题的,但是long转ing的话,那么就是强制转换了,long有64位,强制换成int就是直接删除掉32位,这种强制转换在int类型放不下这么大数据的情况话会有失精度
整数类型分别是 byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)
byte 8位 1个字节 -128 到 127
short 16位 2个字节 -32768 到 32767
int 32位 4个字节 -21亿 到 21亿
long 64位 8个字节 2万亿左右 long类型超过数字结尾要加个L, 否则默认为int类型, 比如 100L
小数类型分别是 float(8个字节)、double(16个字节)
float 32位 4个字节 保留6位小数 float类型数值后面必须加F,否则默认double 类型, 比如 3.14F
double 64位 8个字节 保留14位小数
注:由于舍入原因,浮点数不能做精确运算
非数值类型分别是 char(2个字节)、boole(1个字节)
char 16位 2个字节 用来存储字符或者汉字的,一个英文是1个字节,一个中文是2个字节
boolean 8为 1个字节 主要用来存储true和false的,判断是与非
二. 运算符号
转义符号有 三个,分别是 \n(换行)、\t(制表)、\r(退格) 三个
System.out.println("我有一头小毛驴\n我从来也不骑"); //结果如下,会给你换行
我有一头小毛驴
我从来也不骑
System.out.println("我有一\t头小毛\t驴");
System.out.println("我从\t来也\t不骑"); //结果如下,会给你表格形式
我有一 头小毛 驴
我从 来也 不骑
System.out.println("aaaa\r我有一头小毛驴"); // 结果如下,会把前面的aaaa给隐藏掉
我有一头小毛驴
赋值运算符只有一个 = ,专门给变量来赋值用的,比如 int i=100; boolean b=true;
算数运算符有七个,分别是 +、-、*、%、/、++、-- ,专门用来运算的
int a=1+1; 结果是2
int b=2-1; 结果是1
int c=3*3; 结果是9
int d=4%2; 结果是2
int e=13/5; 结果是3
int f=1++; 结果是2
int g=1--; 结果是0
关系运算有六个,分别是 >、<、>=、<=、==、!= ,专门用来判断的
System.out.println(1 < 2); //true
System.out.println(2 > 1); //true
System.out.println(1 <= 1); //true
System.out.println(1 >= 2); //false
System.out.println(1 == 1); //true
System.out.println(1 != 1); //false
逻辑运算法有三个,分别是 &&(与)、||(或)、!(非),专门用来做判断的
System.out.println(true && false); // false 两个值都为true才会是true
System.out.println(true || false); // true 其中一个值为true就会为true
System.out.println(!true); // false 取反,true取反就是false
三. 条件判断
在java中主要有两种条件判断,if else(条件分支) 和 switch(多路条件分支) 这两个
if else主要就是判断true和false,为true就执行if里面的代码,为false就执行else里面的代码
if(1==1){
System.out.println("条件为true执行这里的代码");
}else{
System.out.println("条件为false执行这里的代码");
}
最终结果: 条件为true执行这里的代码
switch多路条件分支,有些时候判断一些已知数值数值的时候可以使用switch来做判断,比如说我们已经知道 staus只有三个值,分别是1、2、3,这个时候我们用switch就会方便很多,如果你的case后面没有加上break跳出判断的话,那么代码还会接着往下一直判断执行下去,什么时候遇到break才会跳出判断
switch (3) {
case 1:
System.out.println("我是病人");
break;
case 2:
System.out.println("我是护士");
break;
case 3:
System.out.println("我是医生");// 这个后面没有加break所以他会继续往下执行
default:
System.out.println("我也不知道我是谁");
break;;
}
最终结果: 我是医生
我也不知道我是谁
四. 循环
循环分为三种循环,分别是while、for、do while 这三种循环,其中的do while循环能用上的地方很少很少,在循环中有两个关键字专门是为了循环而生出来的,分别是break(结束循环)、concontinue(跳过当前循环),当然了,break在上面的switch判断中也很关键!
while循环,只要条件满足就会一直循环,如果一直循环的那就是死循环了,死循环非常消耗cpu和内存的
int i = 1;
while (i > 0) {
if (i == 100) {
// 如果i=100的时候就结束循环
break;
}
System.out.println(i);
i++;
}
结果打印是: 1 - 99
for循环的写法比较简单,它里面分别有三个参数,第一个参数只会执行一次,第二个参数是判断条件,但三个参数每次都是执行
for (int i = 1; i <= 100; i++) {
if (i > 50) {
continue;
}
System.out.println(i);
}
结果打印为 1 - 50,continue的作用就是跳过但前这次循环
do while循环是一种很少用的上的循环,用不上的主要原因他是先循环后做判断的,所以说,不管在什么情况下,他都会循环一次!
do {
System.out.println("HelloWorld");
} while (false);
五. 数组和效率非常低的冒泡排序法
数组你可以看做一个一次性可以存多个数值的工具,数组也分为int数组,boolean数组,八种基本数据类型都可以为数组,对象也可以是一个数组!数组的创建方式有三种,拿值方式也有几种,但是在java中有个封装好的对象是Arrays,这个对象有一整套封装好专门对数组操作的方法,具体可以慢慢看
int[] i = new int[2];
String[] s = {"旺财", "二狗子"};
// 数组循环拿值的方式
for (String s1 : s) {
System.out.println(s1);
}
for (int a = 0; a < s.length; a++){
System.out.println(s[a]);
}
// 通过 Arrays 对象的方式来把数组全部打印出来
System.out.println(Arrays.toString(s));
// 查询旺财在这个值在这个数组的位置
System.out.println(Arrays.binarySearch(s, "旺财"));
冒泡排序法
int[] i = {3, 5, 6, 8, 2, 1, 0, 4, 7, 9};
// 冒泡排序法
for (int m = 0; m < i.length - 1; m++) {
for (int k = i.length - 1; k > m; k--) {
if (i[k] < i[k - 1]) {
int u = i[k];
i[k] = i[k - 1];
i[k - 1] = u;
}
}
}
System.out.println(Arrays.toString(i));
i = new int[]{3, 5, 6, 8, 2, 1, 0, 4, 7, 9};
// 利用Arrays里面的排序方法
Arrays.sort(i);
System.out.println(Arrays.toString(i));