java复习第二篇——数据类型和运算符

一.标识符

标识符:Java对包、类、接口、方法、变量、常量等命名时使用的字符序列。

Java标识符命名规则:

       1、标识符由字母、数字、 “_”、 “$”组成,且首字母不能是数字;
       2、不能把Java关键字作为标识符;
       3、标识符没有长度限制;

       4、标识符对大小写敏感。

二.关键字

关键字:Java语言规定的具有特定含义的标识符。

注意——关键字不能用作变量名、方法名、类名、包名。

所有关键字:

三.Java数据类型

数据类型分为两大类:

基本数据类型:byte、short、int、long、double、float、boolean、char

引用数据类型:类、接口、数组、枚举、注解

基本数据类型

1.整型

整型是用来定义整数的关键字,四种整型(byte、short、int、long)都有其表示范围。
Java整形数据类型的有如下4种表示形式:
              十进制整数。
              二进制整数。
              八进制整数。

              十六进制整数。

2.浮点型

浮点型是用来定义小数的关键字。
浮点型数据有如下两种表示方式:
             十进制形式,例如3.14。

             科学计数法形式,例如3.14e1。 所有的小数都是float

注意:在对float数据进行赋值时,要在数字的后面添加f(或F),否则Java编译器会认为1.3是一个double类型的数值,而double不能直接赋值给float类型。

3.布尔型

只有true和false两个取值,默认初始值为false。 在二进制逻辑中Java规定1为真0为假。

4.字符型

字符型采用Unicode编码,一个Unicode编码占2个字节(即16位),由于字符型不存在正负之分,所以其表示范围为0至2的16次方-1(0~65535)。

Unicode编码:

Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含了世界上所有的语言字符,它也就成为了全世界一种通用的编码,而且用十六进制4位表示一个编码,非常简结直观,为大多数开发者所接受,特别是十六进制编码后,可以解决汉字在js再编码过程中出现乱码问题,提高解释速度,我们建议在js脚本中使用十六进制unicode编码。

UniCode汉字转换,网上很多,但相对比较好使的比较少,大都写法一样,转换的效果差别不大,或多或少有些遗憾,我这找到个相对较好的,能直接转换标点符号的转换器。

地址:http://javawind.net/tools/native2ascii.jsp?action=transform

ASCII编码:

ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示英语字符
是当今最通用的单字节编码。包括128个字符。

基本数据类型的转换-

分为自动类型转换和强制类型转换

将表示范围小的数据类型赋值给表示范围大的数据类型时,Java自动使用隐式类型完成数据类型转换,即:
      低-------------------------------------------------------------------------------------------------------->高

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

当把级别高的变量赋值给级别低的变量时,必须使用显式类型转换。显示转换格式:(要转换的类型)被转换的值。

但是    显式类型转化(强制类型转换)可能导致数据精度损失或溢出。

四.变量与常量

变量概述:Java通过定义变量来申请数据存储空间,并通过变量名获取或改变存储的值。
变量命名规则:
             变量名必须遵循标识符命名规则;
             首字母必须小写,如果由多个单词组成,从第二个单词开始首字母必须大写;
             变量名一般由名词组成。

变量与常量区别:

标识符命名区别:

        变量:在符合标识符的前提下,首字母小写,之后每个单词的首字母大写;
        常量:在符合标识符的前提下,左右字母大写,多个单词之间用下划线间隔;
值是否可以重新改变:
        变量:变量的值可以改变;
        常量:常量的值初始化以后不允许再次改变;
是否使用final关键字:
        变量:一定没有final关键字;
        常量:必须使用final关键字修饰;
是否需要初始化:
        变量:只有局部变量在使用前必须赋值(不是初始化);
        常量:必须在声明的时候初始化;

五.直接量

1.直接量 是指 在程序中通过源代码直接给出的值. 
例如在 int a = 5; 这行代码中, 为变量 a 所分配的初始值 5 就是一个直接量.
2.直接量的类型

并不是所有的数据类型都可以指定直接量. 
能指定直接量的通常只有三种类型
基本类型 
int 类型直接量: 整型数值, 可以 二进制, 十进制, 八进制 和 十六进制来表示. 例如十进制的: 5
long 类型直接量: 在整型数值后面添加 L , 例如 3L
float 类型直接量: 在一个浮点数后面添加 F. 例如 5.34F
double 类型直接量: 一个浮点数, 例如 5.34
boolean 类型直接量: 这个类型的直接量只有 true 和 false
char 类型直接量: 三种形式, 单引号括起来的字符, 转义字符, 和 Unicode值. 例如 ‘a’ ‘\n’ ‘\u0061’
字符串类型 
一个用双引号括起来的字符就是String类型的直接量, 例如 “哈哈哈”
null 类型 
null类型是一种特殊类型, 它只有一个值: null. 而且它可以赋值给任何引用类型的变量.用以表示这个引用类型变量中保存的地址为空, 也就是没有指向任何有效对象.
关于引用类型, 以后的以后 会讲到.
3.直接量的赋值以下代码都是OK的
int a = 6;
char c = 'b';
boolean b = true;
float f = 5.21F;
double d = 3.12;
String myself = "哈哈哈";

关于字符串直接量需要注意, 当程序第一次使用字符串直接量时, JAVA会使用 常量池来缓存该字符串直接量, 如果程序后面的部分需要用到该字符串直接量时, JAVA会直接使用常量池中的字符串直接量.
常量池 这个名词看起来高大上, 其实就是将一个字符串保存在了内存当中, 谁想用直接拿去用, JAVA就不用重新生成这个字符串直接量了. 看到没, 其实就是 JAVA在偷懒!
常量池指的是在编译期被确定, 并且保存在已编译的 .class 文件 中的一些数据. 它包括关于类, 方法, 接口中的常量, 也包括字符串直接量.
让我们写段代码试试看.

public class VariablesDirectly
{
  public static void main(String[] args)
  {
    String s0 = "hello";
    String s1 = "hello";
    String s2 = "he" + "llo";

    //让我们做个比较 看看他们相同么?
    System.out.println( s0 == s1 );
    //下面这个有意思
    System.out.println( s0 == s2 );
  }
}


运行的结果是两个 ture. 
是不是很有意思呢? s0 是原装的 s2 是拼接的 这都能相同?
因为 JAVA会确保每个字符串常量只有一个, 不会产生多个副本. 这么做是为了节省内存空间, 提升程序运行效率.
he 和 llo 拼接之后就是 hello , 所以 s0 == s2 ,返回 true

六.Java运算符

Java语言支持如下运算符:
      算术运算符:+、-、*、/、%、++、- -
      赋值运算符:=、+=、-=、*=、/=等等
      位运算符:~、&、|、^
      逻辑运算符:!、&&、||
      关系运算符:>、<、>=、<=、= = 、!=

      移位运算符>>、<<、>>>(无符号右移)

赋值运算符:=、+=、-=、*=、/=等

位运算符:

“按位与”运算符“&”,规则:全1则1,否则为0

“按位或”运算符“|”,规则:全0则0,否则为1。

“按位非”运算符“~”,规则:遇1则0,遇0则1。

“按位异或”运算符“^”,规则:相同为0,不同为1。

移位运算符:

 >> 右移运算符:将二进制数据进行右移运算。
 << 左移运算符:将二进制数据进行左移运算。
 >>> 无符号右移运算符:无论正负,都在高位插入0

        int a = 3;
        int b = 3;
        int c = 8;
        int d = 2;
        System.err.println(a<<b);//左移 乘2的 n次方
        System.err.println(c>>d);//右移 除2的 n次方

Java表达式优先级:

猜你喜欢

转载自blog.csdn.net/qq_30509055/article/details/88620458