2.1.数据类型

一.注释

  接下来我们将的内容可能比较琐碎。但是都是基础,就如同盖房子我们需要的砖块一样,之后讲控制语句,控制语句就像黏土一样,讲砖块连接起来。

  为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释。写注释提高我们程序员之间相互协作的效率,所以我们要在每一个类,每一个方法上面写上注释, 注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。 在Java中根据注释的功能不同,主要分为单行注释、多行注释和文档注释

  • 单行注释: 使用“//”开头,“//”后面的单行内容均为注释。
  • 多行注释: 以“/”开头以“/”结尾,在“/”和“/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。有个小技巧,我们可以用多行注释来做行内注释。
  • 文档注释: 以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)

例子:

/**
 * Welcome类(我是文档注释)
 * @author 赵
 * @version 1.0
 */
public class Welcome {
    //我是单行注释
    public static void main(String[] args/*我是行内注释 */) {
        System.out.println("Hello World!");
    }
    /*
       我是多行注释!
       我是多行注释!
     */
}



二.标识符

标识符的作用:标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age、name、gender等。


标识符需要遵守一定的规则:

  • 标识符必须以字母、下划线_、美元符号$开头。
  • 标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
  • Java 标识符大小写敏感,且长度无限制。
  • 标识符不可以是Java的关键字。

标识符的使用规范:

  • 表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
  • 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()

  【注意】:Java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的国际字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!

题外篇:
  1.ASCII字符集
  我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。
  上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
  ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。

  2.非ASCII编码
  英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。

  3.Unicode
  世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
  可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。
题外话结束。

合法的标识符
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55; //合法,但是不建议使用中文命名的标识符

三.Java关键字/保留字

关键字这块大家只需要看一遍就行,不用背。

abstractassertbooleanbreakbytecasecatchcharclass
constcontinuedefaultdodoubleelseextendsfinalfinally
floatfordefaultgotoifimportinstanceofintinterface
longnativenewnullpackageprivateprotectedpublicreturn
shortstaticstrictfpsuperswitchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

四.变量

初识变量:
  变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
  Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。
  变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

格式为:

type  varName [=value][,varName[=value]...]; 
//[]中的内容为可选项,即可有可无
数据类型  变量名  [=初始值] [,变量名  [=初始值]…];

double  salary;
long  earthPopulation;
int  age;

在这里插入图片描述

变量分类:
局部变量(local variable)/实例变量
  方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。

public void test() {
	{/ / 语句块 开始
		int a=1;
		System.out.print(a);
	} // 语句块 结束

   int i;
   int j = i+5 ; // 编译出错,变量i还未被初始化 
} 
  
public void test() {
   int i;
   i=10;
   int j = i+5 ; // 编译正确
}

成员变量(也叫实例变量 member variable)
  方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。(而局部变量需要初始化)

数据类型初始值
int0
double0.0
booleanfalse

静态变量(类变量 static variable)
  使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。 (注:讲完内存分析后我们再深入!先放一放这个概念!)如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值。

/**
 * 测试变量
 * 
 * @author 赵
 *
 */
public class TestVariable {
    int a;                    //成员变量, 从属于对象; 成员变量会自动被初始化
    static  int  size;   //静态变量,从属于类
     
    public static void main(String[] args) {
        {
            int age;        //局部变量,从属于语句块;
            age = 18;
        }
         
        int salary = 3000;    //局部变量,从属于方法
 
        int gao = 13;
        System.out.println(gao);
 
        int i;
        // int j = i + 5; // 编译出错,变量i还未被初始化
    }
}

五.常量(Constant)

  常量通常指的是一个固定的值,在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。

声明格式为:

final  type  varName = value;

变量和常量命名规范(不规范会直接损害你的个人形象)

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则: monthSalary
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线:MAX_VALUE
  5. 类名:首字母大写和驼峰原则: Man, GoodMan
  6. 方法名:首字母小写和驼峰原则: run(), runRun()

六.基本数据类型

  Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
在这里插入图片描述

引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!

6.1整数类型:

类型占用存储空间表数范围
byte1字节-2^7 ~ 2^7-1(-128~127)
short2字节-2^15 ~ 2^15-1 (-32768~32767)约3万
int4字节-2^31 ~ 2^31-1 (-2147483648~2147483647) 约21亿
long8字节-2^63 ~ 2^63-1

Java 语言整型常量的四种表示形式

  1. 十进制整数,如:99, -500, 0(默认)
  2. 八进制整数,要求以 0 开头,如:015
  3. 十六进制数,要求 0x 或 0X 开头,如:0x15
  4. 二进制数,要求0b或0B开头,如:0b01110011
    Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ 。
long a = 55555555;  //编译成功,在int表示的范围内(21亿内)。
long b = 55555555555;//不加L编译错误,已经超过int表示的范围。

6.2浮点类型:
  带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。
  float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点型常量默认类型也是double。
  float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
  浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal, BigInteger类。

 float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为false

float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2){
   System.out.println("d1==d2");//输出结果为d1==d2
}else{
    System.out.println("d1!=d2");
}

6.3字符类型:
  字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。
  char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。

char eChar = 'a'; 
char cChar ='中';

Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)

char c = '\u0061';

Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。常用的转义字符及其含义和Unicode值如表2-6所示。

转义符含义Unicode值
\b退格(backspace)\u0008
\n换行\u000a
\r回车\u000d
\t制表符(tab)\u0009

6.4 boolean类型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。

请不要这样写:if ( flag == true ),只有新手才那么写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值