• 2.数据类型和运算符


    1 标识符

    总的命名规则:见名知意。如果有多个单词组成,首单词小写,其余单词的首字母大写(驼峰命名法)。Eg:goodName

      1.首字母只能是字母,下划线和$(美元符)

      2.其余字母可以字母,下划线,$和数字组合

      3.不能使用预留关键字

      4.严格区分大小写

     

    2 数据类型

      Java变量是程序中最基本的存储单元,变量名必须是合法的标识符。Java是一种强类型语言,每个变量都必须声明其数据类型,只有在变量声明以后,才能为其分配相应长度的存储单元。(先声明,后赋值(初始化),再使用)变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

      变量声明 数据类型 变量名 [= 值]

      float pi = 3.14 ;(×)

      float pi = 3.14f ;(√)

        eg  :  int r = 2;

         float s = pi*r*r;//计算面积

        System.out.println("圆的面积为:"+s);

      数据类型分为基本数据类型(8种)和引用数据类型,引用数据类型包括:类,接口,数组。

    Java 语言整型常数的三种表示形式:

      十进制整数,如:99, -500, 0。

      八进制整数,要求以 0 开头,如:015。

      十六进制数,要求 0x 或 0X 开头,如:0x15 。

    3 基本数据类型

      类型: byte 1个字节(8位) -128~127

        short 2个字节(16位)  -32768~32767

        int  4个字节(32位)  -2^31~2^31-1(大约21亿)

        long 8个字节(64位) -2^63~2^63-1

      * Java中带小数点的常量默认为double类型,(在值得后面+f/F,代表float类型)

      * byte,short,int之间如果进行算数运算,结果会自动转为int类型。

      12314668789213(整型常数)默认为int类型,如果声明一个long类型的变量,要在为其赋值时需要在数字后+“l/L”

      eg:long a = 555;(√ 在int范围内)

        long p = 1111111111111235456L(√)

      float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。

      Double类型:双精度类型,表示这种类型的数值精度是float类型的两倍,绝大部分应用程序都采用double类型。

      java 浮点类型常量有两种表示形式:十进制数形式,科学记数法形式。

        eg : float f = 3.14f; double d = 3.14;

          print(f==d);//值相同,但精度不相同,结果就不相同,所以结果为假(false)

      单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串(双引号)。

      char 类型用来表示在Unicode编码表中的字符。

      Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;ASCII码占1个字节,可允许有128个字符,是Unicode编码表中前128个字符。

      boolean类型只有两个值,true和false,主要用于判断逻辑条件。

    4 Scanner:扫描器

      常量:程序在运行过程中不能对其重新赋值,在java中使用final修饰的变量就是常量,只能被初始化一次。

      常量的命名规则: 使用大写字母,如果有多个单词组成,中间使用_连接。

          final double PI=3.14;

          final int MAX_VALUE=10;

      除java.lang包下的类使用时不需要导包外,其他包下的类在使用时需要导包。

      通过java.util.Scanner类可以获取用户输入的内容。

         使用步骤:

      1.使用import关键导入包,import语句放在类的声明上面(第一行语句);import java.util.Scanner;

      2.创建Scanner对象  类名 对象名 = new 类名(参数);

                Scanner aaa = new Scanner(System.in);

      3.使用Scanner中方法获取用户输入

          对象名.方法名();

          scanner.nextInt()--->获取用户输入的int类型的值

          scanner.nextFloat()--->获取用户输入的float类型的值

          scanner.nextDouble()--->获取用户输入的double类型的值

          scanner.next()--->获取用户输入的string类型的值

          scanner.nextLong()--->获取用户输入的long类型的值

        eg : String name = aaa.next();--->获取用户输入的字符串

    5 运算符

        Java 语言支持如下运算符:

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

      关系运算符:  >,<,>=,<=,==,!=  

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

      位运算符:  &,|,^,~ , >>,<<,>>> (了解)

      条件运算符 ?:

      赋值运算符 =

      复合赋值运算符:+=,-=,*=,/=

      位运算符:~ -- 取反 &   -- 按位与    

      |  -- 按位或 ^  -- 按位异或   

      <<:左移运算符, >>:右移运算符 >>>:无符号移位运算符

      >>右移一位相当于除2取商。a>>3---a/3/3/3

      <<左移一位相当于乘2。a<<4---a*2*2*2*2

      左移或右移是使用CPU中寄存器进行运算符,其运算效率是最高。

       int a=1;

       int b=0;

       int c=2;

      //System.out.println(~a);//补码

       System.out.println(a&b);//0

       System.out.println(a|b);//1

       System.out.println(a^b);//1

       //计算2^3=?使用效率最高的算法 --->System.out.println(c<<2);//  

    优先级:1 ()括号的优先级最高

        2 算数运算符>关系(比较)运算符>逻辑运算符>条件运算符>赋值运算

        eg : !(非) > &&(与) > ||(或)

      整数运算:

        如果两个操作数有一个为Long, 则结果也为long

        没有long时,结果为int。即使操作数全为shot,byte,结果也是int.

      浮点运算:

        如果两个操作数有一个为double, 则结果为double.

        只有两个操作数都是float, 则结果才为float.

      &和&&的区别:

      1.短路与&&如果左边为false,右边不再做运算。

         逻辑与&在任何条件都将运算所有的条件

      2.&可以做位运算

    字符串连接符

      “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

      int c = 12;

      System.out.println("c=" + c);

    6 i++和++i的异同之处

      共同点:

          1、i++和++i都是变量自增1,都等价于i=i+1

          2、如果i++,++i是一条单独的语句,两者没有任何区别

          3、i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。

      不同点:

         如果i++,++i不是一条单独的语句,他们就有区别

        i++ (+在后,先输出赋值,再自加)

      eg :

        ++,--如果放在操作数前面,先执行的自加或自减,后输出

        ++,--如果放在操作数后面,先执行的输出,后自加或自减

      int num = 5;

      System.out.println("num++ ="+num++);//==>输入5 ,num=6

      System.out.println("++num ="+(++num));//==>输入7,num=7

      System.out.println("num-- ="+(num--));//==>输入7,num=6

      System.out.println("--num ="+(--num));//==>输出5,num=5

      System.out.println("num--+num++ ="+(num--+num++));//==>输出9  ,num=5

      System.out.println("--num+++num ="+(--num+(++num)));//==>输出9

    7 类型转换

      A.自动转化 i两种数据类型要相互兼容

         ii目标类型要大于源类型(小的向大的自动转化)

        byte-->short-->int-->long-->float-->double

       多种类型转化,结果为范围最大的,long--》float过程精度可能会丢失

      B.强制转化 会出现精度的丢失,甚至会出现数据的失真

        语法:(数据类型)表达式或变量;

        eg :double f =3.14;

         int i = (int)f;--->i=3

  • 相关阅读:
    把arguments转化成数组
    最小化重绘和重排
    选择器API
    事件委托
    WAhaha_hnu (zoj 2010 oct月赛)
    素数计数公式全面拉丁化改写小有改进Meissel公式梅塞尔Lehmer公式莱梅=勒梅尔筛法三种形式孟庆余公式(转载)
    NBUT 2013 Timed NOJ Training #005
    2013 腾讯马拉松初赛第一场
    hrboj 1683 树形DP
    哈尔滨2013校赛训练赛 4 解题思路
  • 原文地址:https://www.cnblogs.com/nicepanda/p/6920724.html
Copyright © 2020-2023  润新知