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

posted @ 2017-05-30 16:39  Nicepanda  阅读(223)  评论(0编辑  收藏  举报