美文网首页
数据类型和运算符1 零基础学习java

数据类型和运算符1 零基础学习java

作者: 佑阳_x | 来源:发表于2018-12-24 11:26 被阅读0次

    12月24日。

    java语言是一门强类型语言

    强类型包含两方面的含义

    1.所有的变量必须先声明、后使用。

    为什么呢?

    因为声明了,运行时计算机才能划分计算机空间给他。根据变量不同,或者在堆里,或者在栈里。

    使用,就是读写这个空间内的值,但是没有声明的话,连存在的空间都没有,那么读写也就无从谈起。

    以下列出了一些变量的声明实例。注意有些包含了初始化过程。 

    int a, b, c; // 声明三个int型整数:a、 b、c 

    int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 

    byte z = 22; // 声明并初始化 z 

    String s = “runoob”; // 声明并初始化字符串 s 

    double pi = 3.14159; // 声明了双精度浮点型变量 pi 

    char x = ‘x’; // 声明变量 x 的值是字符 ‘x’。 

    这里看到一个有意思的知识点:

    静态变量一定要先声明后赋值

    这标题看着让人很纳闷,什么叫做变量一定要先声明后赋值?Java中的变量不都是先声明后使用的吗?难道还能先使用后声明?能不能暂且不说,我们先来看一个例子,代码如下:

    public class Client {

        public static  int i=1;  // 给变量赋值

        static{  

            i=100; 

        } 

        public static void main(String[] args) { 

              System.out.println(i); 

        } 

    }

    测试输出结果,输出100嘛!对,确实是100。

    后面把这段代码变换一下位置:

    public class Client {

        static {

            i = 100;

        }

        public static int i = 1;

        public static void main(String[] args) {

            System.out.println(i);

        }

    }

    变量i的声明和赋值调换了位置,现在的问题是:这段程序能否编译?如果可以编译那输出是多少?还要注意:这个变量i可是先使用(也就是赋值)后声明的。

    答案是:可以编译,没有任何问题,输出是1。对,你没有看错,输出确实是1,而不是100。仅仅调换了一下位置,输出就变了,而且变量i还真是先使用后声明的,难道这世界真的颠倒了?

    这要从静态变量的诞生说起了,静态变量是类加载时被分配到数据区(Data Area)的,它在内存中只有一个拷贝,不会被分配多次,其后的所有赋值操作都是值改变,地址则保持不变。我们知道JVM初始化变量是先声明空间,然后再赋值的,也就是说:

    int i=100;

    在JVM中是分开执行,等价于: 

     int i;//分配地址空间 

     i=100;//赋值

    静态变量是在类初始化时首先被加载的,JVM会去查找类中所有的静态声明,然后分配空间,注意这时候只是完成了地址空间的分配,还没有赋值,之后JVM会根据类中静态赋值(包括静态类赋值和静态块赋值)的先后顺序来执行。对于程序来说,就是先声明了int类型的地址空间,并把地址传递给了i,然后按照类中的先后顺序执行赋值动作,首先执行静态块中i=100,接着执行i=1,那最后的结果就是i=1了。

    如果有多个静态块对i继续赋值呢?

    i当然还是等于1了,谁的位置最靠后谁有最终的决定权。

    2.指定类型的变量只能接受类型与之匹配的值

    强类型 语言可以在编译过程中发现源代码的错误,从而保证程序更加健壮。

    java语言提供了风的基本数据类型,

    例如:整型 byte short int long 四种

    字符型 char

    浮点型 float double 2种

    布尔型 boolean

    基本类型大致上可以分为两类:

    数值类型、布尔类型。

    数值类型包括整型、字符型和浮点型,所有数值类型之间可以进行类型转换,这种类型转换又包括自动类型转换和强制类型转换

    java语言还提供了一系列功能丰富的运算符。

    这些运算符包括所有的算数运算符,以及功能丰富的位运算符、比较运算符、逻辑运算符,这些运算符都是java编程的基础。将运算符和操作数链接在一起就形成了表达式。

    这里有几个名词解释不太懂:

    操作数:参与运算的常量或者变量称为操作数。

    表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

    不同运算符连接的式子体现的是不同类型的表达式。


    运算符:对常量和变量进行操作的符号称为运算符。

    算术运算符:+、-、*、/、%、++、--

        /和%的区别?

        /:除法,得到商

        符号相同为正,不同为负

        %:除法,得到余数

        符号和第一个操作数相同

        %的应用:

          x%3 等于 0 说明x能被3整除

          x%2 等1 说明x是奇数

              等0 说明x是偶数

    ++,--运算符

     作用:++就是加1,--就是减1。

          自增自减运算符

        ++,--在运算的时候,可以放在操作数的前面,也可以放在操作数的后面

          A:单独使用

           没有区别

          B:参与其他操作使用

            后面:先操作,再自增

            前面:先自增,再操作

      赋值运算符

                  基本:=

        扩展:+=

      扩展的赋值运算符隐含了强制类型转换:

        int a = 10;

        a += 20;

        a = (a的数据类型)(a + 20)

    比较运算符==,!=,>,>=,<,<=

      注意:

        A:比较运算符的结果肯定是boolean。

        B:你到底是使用"="还是使用"==",你自己要清楚。

    逻辑运算符:&、|、!、^、&&、||

        注意:

        逻辑运算符用于连接关系表达式

        结论:

        &: 有false则false  

        |: 有true则true 

        !:改变结果,取反

        ^:相同false,不同true

    最常用的逻辑运算符;

        !,&&,||

              &&和&:

        结果一样,但是&&具有短路效果,左边如果是false,右边不执行。

      ||和|:

        结果一样,但是||具有短路效果,左边如果是true,右边不执行。

    三目运算符 格式:?:

      (比较表达式)?表达式1:表达式2;

      执行流程:

        如果条件为true,运算后的结果是表达式1;

        如果条件为false,运算后的结果是表达式2;

      需求:获取两个数据中的最大值

      嵌套使用(获取三个数的最大值)

    相关文章

      网友评论

          本文标题:数据类型和运算符1 零基础学习java

          本文链接:https://www.haomeiwen.com/subject/vspakqtx.html