• 数据类型和运算符


      前言:java语言是一种强类型的语言,js是一种弱类型。强类型的含义:1所有的变量必须先声明后使用(否则编译失败,空指针异常)2指定类型的变量只能接受类型与之匹配的值。这样做的意义是java语言是一种先编译后解释的执行过程,这样编译器可以在编译过程中就发现源代码的错误,从而保证程序更加健壮。java语言提供了丰富的数据类型,例如整型、字符型、浮点型、布尔类型。基本类型可以分为以下两类:数值类型和布尔类型,数值类型包括整型、字符型、浮点型,所有数值类型可以进行类型转换,这种类型转换包括自动转换类型和强制转换类型。

    一、标识符和关键字

    1.1分隔符




     1.分号

      java语言采用;作为语言的分隔符,所以每一个java语句必须以分号作为结尾。Java允许一行书写多个语句也可以一个语句用多行书写。

    int age=12;String name="nidie";
    String mata="daidai"+
        "dashixiong";
    

      java语句虽然可以跨行书写,但是一个字符串和变量名不可以跨行书写,否则是错误的。

    2.花括号

    {}的作用是定义一个代码块,代码块在逻辑上是一个整体。对于java语言而言,类定义部分必须放在一个代码块里,方法体部分也必须放在一个代码块里。花括号都是成对出现的。

    3.方括号

    []的作用作用就是去访问数组元素,math[5]访问math数组中第六个元素,

    4.圆括号

    ()是一个功能非常丰富的分隔符;定义方法时必须使用圆括号来包括所有的形参声明;调用方法时也必须使用圆括号来传入实参值,还可以将表达式中某个部分括成一个整体,保证这个

    部分被优先计算,圆括号还可以作为强制类型转换的运算符;还有很多的作用 ,需要自己去发现了。

    5.圆点

    表示调用一样东西的意思。

    1.2标识符

    标识符就是用作标识程序中变量、类、方法名的符号。定义是必须以字母、下划线_、$美元符开头,后面可以接任意的数字、字母、_、$、中文等;在java9中声明不能以_单独的下划线作为标识符。

    使用时需要注意以下规则:

    不能以数字开头;不可以使用关键字或者是保留字,但是可以包含这两个;标识符不能包含空格;标识符只能有$字符,不能有其他字符。

    1.3Java关键字

    java所有的关键字都是小写的,goto和const两个关键字也被称为保留字。

    二、数据类型分类

       声明一个变量只需要指明它的变量类型和变量名就可以了。编程的本质就是对内存中数据的访问和修改;程序所用的数据都会保存在内存中,程序员需要一个机制来访问或去修改其中的数据;

    这种东西就是变量,每个变量都代表了一小块内存,而且变量时有名字的,对变量进行赋值时,实际上就是把数据装入变量所表示的内存区的过程。变量相当于一个有名称的容器,该容器用于装

    各种不同的数据类型。

      Java语言分为两种类型:基本类型和引用类型;基本类型Boolean,int,char,float,double,short,long,byte.

    2.1基本数据类型

    byte:一个byte类型整数在内存里占八位,数据范围是-27~27-1.

    short:一个short类型整数在内存里占16位,数据范围是-215~215-1.

    int:一个int类型整数在内存里占32位,数据范围是-231~231-1.

    long:一个long类型整数在内存里占64位,数据范围是-263~263-1.

    char:一个char类型整数在内存里占16位,数据范围是0~65535  字符类型通常用于表示单个的字符,字符值必须使用单引号''括起来。

     float:一个float类型数据在内存里占32位,   后面需要有后缀f,float ddd=2.11212f

    double:一个double类型数据在内存里占64位

    Boolean:true  false  主要用作旗标来进行流程控制

    2.2基本数据类型转换

      在Java中不同数据类型的值是经常需要相互转换的,Java语言提供的七种数值类型之间可以相互转换,有两种转换方式:自动类型转换和强制类型转换。

    自动类型转换:当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换,否则就需要强制类型转换。就如同有两瓶水,小的倒向大瓶里面是没有任何问题的。

    强制类型转换:把上图右边的类型向左边转换时就需要强制转换,语法格式是(targetType)value,就如同有两瓶水,把大水倒入小水瓶时,如果大瓶得水太多了,就会造成溢出,从而造成数据丢失。

    三、运算符

    3.1算术运算符

      算术运算符用在数学表达式中,它们的作用和在数学中的作用一样,分为一元运算符和二元运算符,二元运算符“+”、“-”、“*”、“/”和“%”分别用来进行加、减、乘、除和取余运算:

    • +”:可用于计算两个数值型数据的和,还可用于字符串对象的连接。当+运算符的两个操作数一个是字符串而另一个是其他数据类型,系统会自动将另一个操作数转换成字符串,然后再进行连接
    •  -:减法,左操作数减去右操作数
    • *:乘法  相乘操作符两侧的值
    • /: 除法运算符,除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然除法的结果截断取整。如果除法运算符的两个操作数都是整数,则除数不可以是0,否则将引起除零异常。
    • %:求余运算的结果不一定总是整数,它的结果是使用第一个操作数除以第二个操作数,得到一个整数的结果剩余的值就是余数。由于求余运算也是进行除法运算,如果除求余运算运算符的两个操作数都是整数,则求余运算的第二个操作数不可以是0,否则将引起除零异常。在操作数涉及负数求余运算中,可通过下面规则计算:先去掉负号,再计算结果,结果的符号取被除数的符号。如求-10 % -3的结果,去掉负号求10 % 3,结果为1。由于被除数是负值,因此最终结果为-1。
    • ++:自加运算符仅仅能操作一个单个数值型(整形和浮点型都可以),不能操作常量,直接量和表达式。运算符既可以放入操作数的左边,也可以放入操作数的右边,但是表达的效果完全不一样。如果把++放到左边,表示先把操作数加一,然后才把操作数放入表达式中运算。如果把++放到右边,表示先把操作数操作数放入表达式中运算,然后才把操作数加一。
    • --:也是单目运算符,与++ 用法类似。

    3.2赋值运算符

    • 赋值运算符的定义为:赋值运算符用来为变量指定新值。
    • 赋值运算符分为两类:一类是使用等号(=)赋值,它把一个表达式的值赋给一个变量或对象;另一类是扩展的赋值运算符。
    • 赋值运算符的格式: variableName = expression;这里,variableName为变量名,expression为表达式。
    • 赋值运算必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值,否则会产生编译错误。int j = 3.14 ;就会产生编译错误,因为3.14是double型数据,不能赋给整型变量,因为可能丢失精度。编译器的错误提示是:Type mismatch:cannot convert double to int。
    • 使用等号(=)可以给对象赋值,这称为引用赋值。将右边对象的引用值(地址)赋给左边的变量,这样,两个变量地址相同,即指向同一对象。String d2 = d1;此时d1、d2指向同一个对象。对象引用赋值与基本数据类型的拷贝赋值是不同的。

    3.3位运算符

      java支持的位运算符有7个,分为两类:位逻辑运算和移位运算。位逻辑运算符包括按位取反(~)、按位与(&)、按位或(|)和按位异或(^)4种,。移位运算符包括左移(<<)、右移(>>)和无符号右移(>>>)3种。位运算符只能用于整型数据,包括byte、short、int、long和char类型。

    3.4扩展后的位运算符

      赋值运算符可以与算数运算符,位移运算符结合,扩展成为更强大的运算符。称之为扩展赋值运算符。在赋值运算符(=)前加上其他运算符,即构成扩展赋值运算符。它的一般格式为:variable operator = expression;这里operator为运算符,其含义是将变量variable 的值与expression的值做operator运算,结果赋给variabl。只要能使用了这种扩展后的赋值运算符,通常都推荐使用它们,因为这种运算符不仅能有更好的性能,而且程序会更加健壮。

    3.5比较运算符

      关系运算符用来判断两个变量或者常量的大小,关系运算符的结果是一个boolean值( true或者false)。==检查如果两个操作数的值是否相等,即使它们是不同的数据类型,如果相等则条件为真,返回true。如果两个操作数都是引用类型,那么只有当引用变量的类型具有父子关系的时候,才可以比较,而且这两个引用必须指向同一个对象才会返回true。!= 如果比较的两个操作数都是数值类型,无论他们的数据类型是否相同,只要他们的值不相等,结果返回为真。

      注意:基本类型的变量,值不能和引用类型的值和变量使用==进行比较。如果两个引用类型之间没有父子继承关系,那么他们的变量也不能使用== 进行比较。

    3.6逻辑运算符

      逻辑运算符用于操作两个boolean类型的变量或者常量,逻辑运算符的运算对象只能是布尔型数据,并且运算结果也是布尔型数据。逻辑运算符包括如下6种:逻辑非(!)、逻辑与(&)、逻辑或(|)、逻辑异或(^)、短路与(&&)、短路或(||)。

      对逻辑“与”(&&或&)和逻辑“或”(||或|)运算都有两个运算符,它们的区别是:“&&”和“||”为短路运算符,而“&”和“|”为非短路运算符。对短路运算符,当使用“&&”进行“与”运算时,若第一个操作数的值为false时,就可以判断整个表达式的值为false,因此,不再继续求解第二个表达式的值。同样当使用“||”进行“或”运算时,若第一个操作数的值为true时,就可以判断整个表达式的值为true,不再继续求解第二个表达式的值。对非短路运算符(&和|),将对运算符左右的表达式求解,最后计算整个表达式的结果。

    3.7三目运算符

      条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。表达式:variable x = (expression) ? value if true : value if false;三目运算符的规则是,先对逻辑表达式expression进行求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数值。

    3.8运算符的优先级

       所有的数学运算都认为是是从左向右的,java语言中大部分运算符也是从左向右的结合的,只有单目运算符,赋值运算符合三目运算符例外,其中单目运算符,赋值运算符合三目运算符是从右向左结合,也就是从右向左运算的。乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。 运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序,下表中列出了运算符的优先级顺序,数字小的优先级总是高于数字大的优先级。要尽量使用()来控制表达式的执行顺序,而不是过多的依赖运算符的优先级来控制表达式的执行顺序。

  • 相关阅读:
    多项式插值取模哈希标记法
    AC自助机
    [OIBH] 糖果盒(Candy Box)——又一个最大子矩形
    windows phone 之ListBox数据绑定
    WP学习笔记
    为TextArea添加maxlength属性
    让整个网页(LOGO图片)色调全部变灰的方法(CSS写法)
    JS调试加断点
    Container.ItemIndex 获取到行的序号
    c# Invoke 与 BeginInvoke
  • 原文地址:https://www.cnblogs.com/yfstudy/p/9460694.html
Copyright © 2020-2023  润新知