JavaSE基础,变量和数据类型,学习笔记

关键字:

      1、全部是小写

      2、变色的,有特殊含义的英文单词、不能写错。

      关键字个数:40+

数据类型:

      计算机的本质是处理数据和保存数据

      数字类型

            可以用来计算

      文本类型

            不能用来计算

java当中的数据类型(关键字):

数字类型
数字类型中文内存(字节)取值范围
byte字节型1-128到127
short短整型2-32768到32767
int标准整型(使用最多)4-2^31-2^31-1
long长整型8-2^63-2^63-1
float单精度浮点类型(小数类型)4

-3.14E^38到-3.14E^38-1

(小数点后6位)

double双精度浮点类型(小数类型默认)8

-1.7E^308到-1.7E^308-1

(小数点后12位)

      在JAVA开发中,通常用:

           整数型:int

           浮点型:double

字符类型
字符类型中文内存(字节)取值范围
char保存单个字符20-65535

      JAVA当中的基本数据类型(8个):

            byte,short,long,int,float,double,char,boolean

      JAVA程序执行的流程:

            从上往下顺序执行;

      注意:

            定义变量的代码,必须要把该代码放在打印语句的前面;

变量:

      定义

            可以改变的量(值):

            当程序中遇到了某个类型的值可以改变或者不确定的时候,就使用变量;

      定义变量的语法:

            数据类型      变量名 = 初始值;

            例:int age = 18;

      变量名的命名规则:

            1、只能由数字、英文字母和下划线(_)或者美元($)符号构成

            2、不能以数字开头

            3、不能和关键字一样

            4、最好有意义

      注意:如果输出一个变量的值的话,必须要给变量初始值

JAVA当中的运算符:

            算数、赋值、比较、逻辑

            1、算数运算符

                  +     -     *     /     %(模、取余、求模)

                  两数相模取其余      两数同时为整数,余只取整数位

                  两束相除取其商      两数同时为整数,商只取整数位

                  注意:在字符串使用+运算的时候,+不代表加法运算,而是代表连接字符;

            2、比较运算符(关系运算符)

                  >      >     =     <     <=     ==(等于)     !=(不等于)

                  注意:比较运算符的结果是boolean类型,必须会有一个结果           

            3、逻辑运算符

                  &(与)

                        当有多个比较表达式是,可以用&

                        作用是当比较表达式全部为true的时候就为ture,

                        只要其中一个表达式为false,就为false

                  |(或)

                        作用是当比较表达式全部为false的时候才为false,

                        只要其中一个表达式为true,就为true

                  !(非)

                        当我们表达式结果为true时,就为false

                        当我们表达式结果为false时,就为true

                  ^(异或)

                        当整个表达式结果相同时,就为false

                        当整个表达式结果不相同时,就为true

                  &&(短路与)

                        当两个表达式,前面表达式有一个结果为false,则后面的表达式不再执行。返回结果为false;

                        如果前面的表达式结果为true,就会执行后面的表达式

                  ||(短路或)

                        当两个表达式,前面表达式有一个结果为true,后面的表达式,则不再执行

表达1表达2|||&&&^
truetruetruetruetruetruefalse
truefalsetruetruefalsefalsetrue
falsetruetruetruefalsefalsetrue
falsefalsefalsefalsefalsefalsefalse

                 注意:为了提高程序效率我们通常使用&&和||

            4、赋值运算符

                  =      将后面的值赋值给前面的。

                  +=      -=      *=      /=      %=

            5、自增,自减

                  ++ --

                  运算规则:

                        自增自减在后面:

                        1、先把num值赋值给一个临时变量;(JVM提供)

                        2、然后对num进行+1运算

                        3、把临时变量的值赋值给接收的变量

                        自增自减在前面

                        1、对定义变量进行+1或者-1运算

                        2、把运算的结果赋值给接收的变量或直接输出

                  注意:

                        在开发当中,如果遇到+1或者-1运算的,直接用一元运算符;

                        一元运算符:++  - -

                        二元运算符:+  -  *  /  %

                        三元运算符:? :(也称条件运算符或三目运算符)

                              语法:接收变量=条件表达式?true的结果:false的结果

                              三元运算符和if的区别:

                                    1、三元运算符必须要有一个接收变量

                                    2、三元运算符只能作为if语句中的双支if语句的存在

                                    3、三元运算符只能使用条件表达式和运算表达式

            程序流程:

                  1、顺序流程(从上往下逐行代码执行)

                  2、条件控制流程(根据一个结果来执行某行或者某块代码)

                  3、重复流程(重复的执行某行或者某块代码)--循环控制流程

        条件控制流程

                  1、判断语句

                        关键字:if

                              1、单支判断语句      if(条件){语句}

                              2、双支判断语句      if(条件){语句1}else{语句2}

                              注意:

                                    单支和双支的IF区别:

                                          1、都是判断一次,但是单支if语句只有一个执行效果,而双支if语句会有两个不同的执行语句

                                          2、if语句的后面,如果只有一行代码的时候,大括号我们是可以省略的。(但不建议省略)一行代码以;结束

                              3、多支判断语句      if(条件1){语句1}else if(条件2){语句2}else if(条件3){语句3}else{语句4}

                              4、嵌套if语句      if(条件1){if(条件2){语句1}}else{语句2}

                  2、选择语句switch

                       关键字:switch(常量表达式){

                                        case 常量值1:语句1; break;

                                        case 常量值2:语句2; break;                                                     

                                        case 常量值3:语句3; break;

                                        case 常量值4:语句4; break;

                                        default: 语句5; break;

                                        }

                        特点:

                              1、switch中的case和default的书写上是没有先后顺序的,但是一定会先执行case语句

                              2、case语句在书写上也是没有先后顺序,但是在执行的时候会按照书写的case顺序去执行

                              3、只有两种情况结束switch语句:一种是遇到break语句,第二种是运行到switch的结尾处

                              4、在switch当中default语句可以省略;而且default语句中的break也是可以省略的。

                              5、switch语句中的case语句后面没有break关键字,也就是匹配的时候遇到没有break关键字case,是会执行该case语句中的代码

                        if与switch区别:

                              1、if语句在条件表达式使用变量时,每使用一次变量就会获取一次变量的值(多次获取);

                              2、switch语句在常量表达式使用变量的时候,指挥获取一次变量;

                              3、switch语句通常是用在单一值进行比较的时候,不适用范围区间的比较

            循环控制语句

                        重复执行某行语句或者语句块;

                              语句:一行代码

                              语句块:多行代码

                              要求:这些代码包括在大括号里面{}

                        java当中的循环(三种)

                              while循环

                                    关键字:while

                                    语法:

                                          while(){语句或者语句块}

                                    如果希望循环正常执行,在循环过程中需要三要素      

                                          1、循环的初始值

                                          2、循环条件

                                          3、修改初始值(修改循环条件)

                                          

                              do while循环

                                    关键字:do while

                                    语法:

                                          do{语句}while(判断)

                              do while和while的区别

                                    1、while先判断条件,后执行循环。如果条件不满足,虚幻一次都不执行

                                    2、do while先执行循环体,再判断条件,如果条件不满足,则循环至少执行了一次

                              do while和while的共同点

                                    初始值   循环条件  修改循环条件

                              for循环

                                   for(初始值; 循环条件;修改条件){执行循环语句}

                              两个关键字:

                                    break: 结束,代表结束整个循环;

                                    continue: 继续,结束本次循环(continue后面的代码就执行)。 直接进入到下一次循环

                              for 和 while循环的异同:

                                    for循环和while循环特点相同,都是属于先判断后执行循环体的循环

                                    定义在for循环里的变量,不能再for循环的外部使用。而while循环的初始值可以在while循环的外部使用

                              嵌套循环:

                                    先执行外部的for循环,当外部的for循环条件为true时,则进行内部for循环

                                    在执行内部for循环的时候,必须整个内部循环完成后(内部的for循环的循环条件不满足时),则执行外部循环的修改循环条件。

                                    当条件修改完成后,继续判断外部for循环的条件是否满足,条件满足,则再次执行内部for循环;

                                    只有外部for循环的条件不满足时,嵌套循环才会全部结束

    输入语句

            Scanner s=new Scanner(System.in);

            int num1=s.nexInt();

                  指定用户输入什么类型的数据,接收的变量就必须为输入数据的数据类型

     数组

            在java当中有个概念:容器

            容器:可以存储多个数据的单位

            在java中,数组容器需要使用一个特殊符号来表示:[]

            为什么使用数组:

                  数组即容器,可以存储多个 相同类型 的数据

            数组的定义:

                  int num[] = new int  [5] //表示定义了一个数组,这个数组容器中可以存储5个类型的数据

            数组的定义的格式:

                  数据名 [ ] = new 数据类型 [ 数组的大小 ];

            数组的使用:

                  在java中对数组进行操作,使用角标来对数组进行操作;

                  操作:

                        通过for循环

                  数组的输出:

                        直接用角标

            数组常见错误

                   1、角标越界(java.lang.ArrayIndexOutOfBoundsException)

                   2、空指针异常(java.lang.NullPointerException)

                        数组在没有任何人引用堆中的内存时,如果你使用这个数据,就会出现空指针异常

            数组的其他定义方式

                   int num1[]=new int[3];

                   int[] num2=new int[3];

                   int[] num3={3,12,34};

                   int num4[]={5,12,2,45};

            注意:

                   1、在数组简化定义方式的时候,JVM在执行,没有声明数组长度,会根据数组所赋予值的个数来开辟空间

                   2、数组无论你使用new和不用new没区别,他都是在堆内存中;

                  在java数组当中提供一个属性:length

                  使用格式:数组名称.length(表示获取数组长度)

      数组的内存图解

            每个程序都有自己的内存空间

            java中的内存空间(5个部分);

            1、寄存器(CPU)跟开发没有关系;不需要关注

            2、本地方法 和windows有关系,能调用系统的一些功能; 不需要关注

            3、方法去 也叫静态区   存放 class 和 static ;后面详解

            4、栈 存储一些局部信息,例如局部变量;

                  栈的特点:先进后出,效率高

            5、堆 存储一些实体(只要使用new 关键字创建)数组就是放在堆里面

                  堆的特点:

                        在堆中存储的信息,都有一个默认的内存地址(首地址)

                        存储堆中的数据,都有一个默认值

      数组的特点及使用思想:

             1、数组必须有长度;数组的大小不能改变

             2、数组存储的数据必须是相同类型的元素

             3、对数组操作时用角标,角标开始值为0

            什么时候用数组

                  存储数据长度固定,并且是相同类型且没规律,是通过角标来操作

                  有规律用循环

      数组的排序

            排序:把一些没规律的数据按照顺序排列

            1、选择排序

                  使用嵌套循环方式,每一轮比较循环结束后,当循环的最小角标的值必须是最大值或最小值

            2、冒泡排序

                  晓得向上浮,大的向下沉(从小到大)

二维数组:

      其实就是多个一维数组;

二维数组的定义:

      int num[][]=new int[2][4];

      这个二维数组:其实就是由两个一维数组构成,并且每个一维数组能存储4个元素;

二维数组其他定义方式:

      int num1[][]={{22,12,32},{12,45},{87,123,34,56}};

函数:

      书写在同一个类中(class),具有特定功能的一段独立程序;

      main  他是主函数   (运行java程序,程序入口)--main方法

函数也被称为方法:

      早期函数叫做功能;

      发现程序中存在重复的代码,这种重复的代码会造成程序的可读性、重复性比较差;

      java程序对这种复用型比较差的解决思想就是使用:函数

函数定义的格式:

      修饰符[public static]  返回值类型[void]  函数名(参数的数据类型  形式参数名1,参数的数据类型 形式参数名2......){          

            //函数体......功能代码

            return 返回值;    

        }

        形式参数名:变量

        参数的数据类型:就是变量的类型

        返回值类型:return 关键字后面跟的数据类型

        函数名:自己取的(程序员)

        return:

            函数执行完成之后,需要的一个返回结果,这个结果就用使用return关键来返回;

            结束函数;

        在我们程序当中,只要明确两个地方,就能很方便的去写函数:

            1、明确是否有函数运算的运算变量;(明确参数)

            2、明确函数执行完成之后,有没有结果;(有没有返回值)

        计算两个数相加:

            明确1:是否有参与函数运算的变量? 有

                加数 和  被加数

            明确2:有没有结果,函数执行完成后? 有

                相加的值    

        public  static  int add(int num1,int num2){

                int sum=num1+num2;

                return sum;

        }

    注意:

        函数内不能嵌套!

        直接在main函数中调用函数名(功能名),写上参数。有返回值的要用一个值去接收他的返回值;

栈内存的特点:先进后出 ;例如:枪中的弹夹

    小结:

        当函数入栈后,会开辟参数的空间,开辟完空间之后才会给参数赋值;

        当函数出栈后,函数中所属所的参数会随着函数的出栈而消失(内存清楚)

    结论:定义在函数内部中变量,都是是属于函数的,这种变量:局部变量

 

    函数的重载:

        遇到相似功能的函数时,我们可以把函数的名称定义为相同的名称,这种方式我们就叫做函数的重载;

    函数重载的特点:

        方法名相同

        参数列表不同(参数的个数不相同、参数的数据类型不同)

            参数顺序不同(参数个数相同,数据类型顺序不一样)

 

        注意:

            函数的重载跟函数的返回值是没有关系的;

            跟变量名也是没关系;

             void  show(int a,float b,char c);        

        下列哪些函数和给的函数是重载了

         void show(int x,float d,char z); //不是的,参数的个数和类型是一样的

         int  show(float b,char c, int a); 是 参数类型不一样

         double show(); //是的,参数个数不一样  

多态

    事物以多种形态来表现。

    java中,我们可以使用对象的具体类型来描述

        例子:Dog(具体类型)  dog(对象)=new Dog();//这就是对象具体类型来描述

    也可以使用对象的父类型来描述:

        Aniaml an=new Dog(); //使用父类类型描述对象

    注意:使用多态有个前提:必须是继承关系或者实现关系

    多态的体现:

        父类(接口)的引用指向子类对象

        例子:

            父类  引用变量=new 子类();

            接口  引用变量=new  子类();

    多态好处:

        提高程序中代码的扩展性

    多态的前提:

        使用多态必须是继承或者实现关系

        通常子类需要把父类中的方法进行重写。

    多态弊端:

        只能操作父子类公有的方法,不能操作子类中特有的方法;

    如何解决这个弊端:

        多态的转型:

            向上转型:

                Aniaml an=new Dog();

                Aniaml 父类类型   an 父类引用    new Dog() 子类对象

                使用父类引用(an)指向子类对象时,其实子类类型已经向上提升为父类型;

            向下转型:

                Aniaml an=new Dog();

                Dog dog=(Dog)an;

    java.lang.ClassCastException:在使用多态中的向下转型时,会常遇到ClassCastException(类型转换异常)

        例子:Aniaml an=new Dog();

        Cat cat=(Cat)an; //会引发类型转换异常  

    向下转型遇见类型转换异常时,使用关键字 instanceof  来对转换的类型进行判断

    小结:

        向上转型:

            为了提高程序中代码的扩展性

            不需要使用子类中特有的方法

        向下转型:

            需要用到子类中特有的方法

            转型的时候,使用instanceof(判断) 来避免 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值