Java学习笔记_ day02

1:数据类型细化
概述:每种数据都有对应类型,23就是整数类型默认写int,理解申请内存空间的时候到底多大由数据类型指定,对应一定的范围大小
分类:
基本数据类型:
整数类型:
byte:字节类型,占一个字节8位,范围-128到127要记忆,即-2的7次方到2的7次方减1
short:短整型,占两个字节16位,范围是-2的15次方到2的15次方减1 //32767
int:整数默认类型,占四个字节32位,范围是-2的31次方到2的31次方减1
long:长整型,占八个字节64位,范围是-2的63次方到2的63次方减1,如果后面的整数超过int的范围你要加上后缀l或者L


小数(浮点)类型:
double:小数默认类型,占八个字节64位,范围不用记,小数永远比整数大,双精度浮点类型,表示小数范围更精确
       有默认后缀d或者D,不写也是写,系统给你写,值直接写


float:小数类型,占四个字节32位,范围不用记,小数永远比整数大,单精度浮点类型,表示小数范围不够精确,一般不用
      如果后面跟的是小数,你一定要加上后缀f或者F


字符类型:
char:字符类型,占两个字节16位,范围要记0-65535,它的值由''单引号引起来,里面有且只能有一个字符


布尔类型:
boolean:布尔类型,Java里面根本就没有指定它的大小,它的值要么是true,要么是false,对应生活中的真假逻辑


引用数据类型:不是基本数据类型就是引用数据类型,比如String就是引用数据类型,都是可以new出来,包括类,接口,数组等等


字节:计算机存储文件的基本单位,计算机底层都是0和1,二进制位,每一个0或者1对应一位,一个字节八位


2:类型转换
数据类型从小到大排序:byte-short-char(插入)-int-long-float-double


隐式类型转换:小的数据类型的数据可以给大的数据类型的数据赋值,会把小的数据类型的值提升为大的数据类型的数据(类型提升)
代码:
int i = 666;//i小的数据类型int对应的数据
double d = 23.4;//d大的数据类型double对应的数据
d = i;//小的数据类型的数据可以给大的数据类型的数据赋值,会把小的数据类型的值提升为大的数据类型的数据(类型提升)
//上面一旦赋值,做了一个操作,i本身是int类型,会把i对应的数据类型int提升为double,小数它的值就变成了666.0而不是原来的666
System.out.println(d);//666.0


//下面这么写也是对的,原理跟上面一样:
double d = 666;//int666-double666.0


注意事项:byte-short-char同类型之间发生运算会提示为int类型!!!
char c = 'a';
System.out.println(c+0);//当一个小的数据类型跟大的数据类型进行运算,会把小的数据类型char提升为大的数据类型int
//把c对应的char类型提升为int类型,由字符a对应int类型的值97


char c = 'a';//char+char = int+ int = 97+97,byte-short-char同类型之间发生运算会提示为int类型!!!
System.out.println(c+c);//194


强制类型转换:如果我一定要把大的数据类型的数据给小的数据类型进行赋值,就要用到强制类型转换,格式如下:
代码:
int i = 666;//i小的数据类型int对应的数据
double d = 23.4;//d大的数据类型double对应的数据
i = (int)d;//强制转换的格式,把double类型的数据强制转换成int类型的数据
System.out.println(i);//23


关于类型转换的注意事项:
1.boolean布尔类型不能跟其他类型进行类型转换,因为boolean布尔类型Java里面根本就没有指定它的大小
代码:
boolean i = true;//i小的数据类型int对应的数据
double d = 23.4;//d大的数据类型double对应的数据
i = (boolean)d;//报错,因为boolean布尔类型Java里面根本就没有指定它的大小
d = i;//报错,因为boolean布尔类型Java里面根本就没有指定它的大小


2.字符都有他对应int值,如何查看,通过码表查看,字符'a'对应的int值是97,'A'对应的65,相差了32,'b'对应的98,'B'是66,其他以此类推
  '0'字符对应的是48,其他数字字符以此类推都是加1

3:标识符//记忆,选择题可能考,平时不用记那么多,简单写个英文单词起名字即可
概述:就是用来起名字的规则,包括给变量,方法,类等起名字都要遵循这么一个规则,给个名字叫标识符
组成规则:英文字母大小,数字0到9,$,_由其中一个或者多个组成(中文也是可以用来起名字但是不推荐)
注意事项:
1.不能以数字开头
2.不能使用关键字(Java赋予特殊含义的单词)
3.严格区分大小写
4.最好见名知意


关键字:Java赋予特殊含义的单词,就不能用来起名字(如果可以起名字我就可以随便改变它原来的意思,比如把class表示类改为班级等等)
       关键字很多,不用记,用多了就熟悉了,关键字有个特点:都是小写的,反过来小写不一定是关键字比如abc,因为abc可以用来起名字,
   关键字不可以用来起名字


4:常见选择语句
if语句:用来解决生活中的选择问题
格式1:一选一,或者多选多情况
if(true){
//true就进来里面做事情,如果是false就不进来
}//i alt /选


格式2:二选一
if(true){
//true就进来里面做事情,下面不走,如果是false就不进来
}else {
//如果上面是false的时候一定进来这里面做事情
}


格式3:多选一
if(true){
//true就进来里面做事情,下面不走,如果是false就不进来
}else if(true){//elseif不可以省略,但是可以有多个
//true就进来里面做事情,下面不走,如果是false就不进来
}else{//else可以省略,建议不要省略,因为可以给出额外的提示
//如果上面都是false的时候一定进来这里面做事情
}


5:运算符(比较,赋值,算术,逻辑)
概述:参与运算的符号
分类:
赋值运算符:=,int a = 666;把=赋值号右边的数据给左边的变量(容器)装上 
           +=,表示把+=号左右两边的数据相加得到结果赋值给左边变量,int i = 2; i+=2;//i = i+2;syso(i)//4
   -=
   *=
   /=
   %=


算术运算符:+,-,*,/,%取模(求余数),++,--
如果单独使用,不管++在前还是在后,表示结果都是一样的,int i = 666;i++,或者++i,都是同一个意思,i = i+1;


如果跟其他人参与运算,你要注意:
如果++在前,先自增然后把得到结果再跟别人进行运算,自增表示加1的意思,++i + 2;自私的人,


如果++在后,先跟别人进行运算得到运算结果,然后再自增,自增表示加1的意思,i++ + 2;无私的人


注意事项:
1.%取模求余数结果只跟左边的符号相关,跟右边无关,//巧记左边%高高在上,模,右边不要,跟右边无关


比较(关系)运算符:<,>,<=,>=,==,!=,它的写法不管简单还是复杂,结果一定是布尔类型,值要么是true,要么是false
        <=小于或者等于都是满足条件的,都是真的,只要有一个成立,都是满足条件的,结果都是真,true


逻辑运算符:&& || ! & |,逻辑运算符左右两边的数据不管简单还是复杂,结果一定是布尔类型,值要么是true,要么是false
//&&读作逻辑与(双与),并且的意思,只有两边同时为真的,整个结果才是真,其他情况都为假
System.out.println(true&&true);//口诀:同为真时且为真,其他情况都为假,true
System.out.println(false&&true);//false
System.out.println(true&&false);//false
System.out.println(false&&false);//false

//||读作逻辑或(双或),或者的意思,只有两边同时为假的,整个结果才是假,其他情况都为真
System.out.println(true||true);//true
System.out.println(false||true);//true
System.out.println(true||false);//true
System.out.println(false||false);//口诀:同为假时或为假,其他情况都为真,false


//!读作逻辑非,取反意思,原来是真的取反后就是假,原来是假的取反后就是真(非真即假,非假即真)
System.out.println(!true);//false
System.out.println(!false);//true
System.out.println(!!true);//true,如果对一个数取反偶数次,结果还是它原来本身
System.out.println(!!!false);//true


面试题:&&逻辑与(双与)跟&单与的区别是什么?
他们的结果都是一样的(因为用的都是同一个口诀:同为真时且为真,其他情况都为假)//true&&true//true
&&具有短路效果(短路与):如果左边是false,整个通过&&连接起来结果就是false,右边不再运算,提高效率,推荐使用,false&&未知//false
&没有短路效果:不管是什么情况,左右两边都要参与运算,效率比较低,一般不用
代码:
int i = 0;
int j = 1;

if (i++==1 && j++==2) {//如果左边是false,整个通过&&连接起来结果就是false,右边不再运算,提高效率,
System.out.println(i);//不管是什么情况,左右两边都要参与运算,
System.out.println(j);
}

System.out.println(j);//1,&&
System.out.println(j);//2&


面试题:||逻辑与(双或)跟|单或的区别是什么?
他们的结果都是一样的(因为用的都是同一个口诀:同为假时或为假,其他情况都为真)//false||false//false,//true||未知  //true
||具有短路效果(短路或):如果左边是true,整个通过||连接起来结果就是true,右边不再运算,提高效率,推荐使用
|没有短路效果:不管是什么情况,左右两边都要参与运算,效率比较低,一般不用


运算符的优先级:运算先后顺序,优先高就先运算,=赋值号优先级几乎是最低,先算它的右边,再给左边赋值
               如果我不知道优先级顺序,用()包围起来东西可以提高优先级,可以先运算


6:方法定义强化训练
概述:方法表示特定功能的代码块{},又叫功能,还叫函数,提高代码的复用性(提高代码重复利用效率,少写了很多代码实现一样的功能)
方法的定义跟定义一个方法都是一样的意思,就是写一个方法,有各种写法:
写一个方法的时候,()里面声明一个变量没有值,搞个形式而已,形式参数(参数),声明变量:数据类型 变量名


//无参数无返回值
public void test(){//void对应的是方法返回值类型的位置,如果一个方法没有返回值,那就没有返回值类型写void表示
//return;//默认不写也是写,系统给你写,这么写表示没有返回值,return表示返回的意思,return跟的值就是返回值
//return表示返回的意思,后面跟的是返回值,能走到这里表示方法都已经结束了,下面不能再写代码
//返回值表示方法给别人使用完毕之后得到的结果
//int i = 66;


}


//有参数无返回值
public void test2(int a){

}


//无参数有返回值
public int test3(){
return 666;//return后跟的值就是返回值这里是666,方法有返回值,返回值类型的位置就不能写void,而应该写返回值对应的数据类型,比如这写int
}


//有参数有返回值
public int test4(int a){
return 666;
}
总结:上面说了那么多,都是学习如何去定义一个方法(写一个方法),没有用,在教学系统里面,把写好的方法发给的服务器去使用去测试(方法的调用)
如果在我平时开发工具eclipse写代码用的工具里面,写一个方法是几乎没有用的,关键是你要把你自己写的方法使用起来(调用起来)
自己写方法,自己去使用(方法的调用就是测试我写的这个方法)


7:方法的调用或者说调用一个方法,其实就是使用一个方法,如何使用?


8:以后eclipse写代码的时候要运行一个程序,首先要建立一个项目,在src文件夹下面新建一个带有main方法的类,程序才能运行起来
代码:
public class 方法定义跟方法调用的区别测试 {
public static void main(String[] args) {//main方法是所有程序的入口,一切程序都是这里面开始的
// System.out.println(666);
//如何使用调用我下面写好的test方法:调用方法格式:方法名();
// test();
//test2(666);//在调用test2方法的时候()里面写的参数其实本质就是一个值,实际传入的值666,实际参数,简称实参,发现实际参数存在意义就是为了给下面的写方法的时候里面那个形式参数赋值
// int i = 666;
// test2(i);
// System.out.println(888);//实际参数本质是一个值

// int j = test3();//得到方法调用完毕的结果也就是方法的返回值666,没有打印
// System.out.println(j);
// System.out.println(test3());//不单指调用test3方法,到方法调用完毕的结果也就是方法的返回值666,也给打印
// System.out.println(999);
// System.out.println(555);

// int i = 555;
// System.out.println(i);

// test4(666);//直接调用
// System.out.println(test4(666));//输出调用

int i = test4(666);//赋值调用
System.out.println(i);
}

//写一个方法是没有用的,关键要把这个方法(使用)调用起来,如何把一个方法调用起来?方法调用格式
//无参数无返回值方法
public static void test(){
System.out.println("test");
}

//有参数无返回值方法的写法,写一个方法的时候在方法()里面声明一个变量就表示一个参数,并且这个变量(参数)只是声明,没有赋值,变量没有值,搞个形式而已,形式参数,简称形参
public static void test2(int a){//a,没有值,搞个形式而已,形式参数, a = 666;//告诉你要调用我这个test2方法有个要求,你要给我的形式参数声明变量a进行赋值,因为我以后可能会用到这个形式参数a
System.out.println("test2");//a = 666;
System.out.println(a);//形式参数a就是为了接收调用调用的时候传入过来的实际参数的值,至于你这个形式参数用不用,具体看你的需求,形式参数本质其实一个没有赋值的变量
}

//无参数有返回值
public static int test3(){
System.out.println("test3");
return 666;//666就是方法的返回值,表示方法调用完毕得到的结果,能走到这里表示方法已经调用完毕,因为你没有打印方法调用完毕结果所以看不到,要看到把这个结果打印
}


//有参数有返回值
public static  int test4(int a){//a = 666;
System.out.println("test4"+a);
return 666;
}

}

猜你喜欢

转载自blog.csdn.net/ycx13787444472/article/details/80343617