Java语言基础(一)

标识符与数据类型

1.1 java基本语法

Java中以分号“;”为语句的分隔符。一个语句可以写在多行,如:

var = a + b + c
      d + e;

一对大括号“{}”里面包含了一系列语句,作为语句块。语句块可以嵌套。
Java源程序中允许在变量、标识符、表达式、语句等代码元素之间出现任意数量的空白,空格、Tab键和换行符都是空白。可以适当在程序中使用空白符,可以增加程序的可读性。

1.2 注释

在程序中添加注释,是一个好习惯,可以增加程序的可读性。编译器会忽略所有注释。
java中存在三种注释:

  • // :单行注释符,表示从“//”开始到行尾都是注释文字。
  • /* */ :注释一行或多行。表示“/*”和“*/”之间的所有内容都是注释。
  • /** */ :文档注释。表示“/**”和“*/”之间的文本,将自动包含在用javadoc命令生成的html格式的文档中。javadoc是jdk中API文档生成器。该工具解析一组java源文件中声明与文档注释,生成一组html页面描述这些源程序重定义的类、内部类、接口、构造方法、方法与属性。

1.3 关键字

任何程序语言中都有关键字存在,关键字是具有特殊意义的单词。java编译器在词法扫描时,需要区分关键词和一般标识符,因此,用户自定义的标识符不能与这些关键词重名,否则会产生编译错误。

java中的关键字如下表所示:
1
2

注意:java语言中关键字都是小写的。

1.4 标识符

1.4.1 标识符定义规则
java中的变量名、类名、方法名等都是标识符,标识符都是由字母(A~Z、a~z)、数字(0~9)、下划线(“_”)以及“$”组成。这些标识符定义的时候需要遵循如下规则:

  • 标识符不能以数字开头;
  • 标识符不能是java语言的关键字,会编译出错,但可以将关键字作为标识符的一部分;
  • java语言对标识符大小写敏感,但长度没有限制。

如:

sort
_sys_var
$char
thisOf

主要注意的是,java语言采用的是Unicode字符集,这种字符集中,每个字母占16位,整个字符集中共包含65536个字符。Unicode字符集除了兼容ASCII码中的字符外,还涵盖了想汉字、朝鲜文、德文等。
我们可以使用Character类中isJavaIdentifierStar(char c)方法和isJavaIdentifierPart(char c)方法来测试参数变量c中的Unicode字符是否可以作为标识符的开始字符或后续字符。

1.4.2 标识符风格约定

  • 对于变量名和方法名来说,“_”和“$”不能作为标识符的第一个字符,因为这两个字符对于内部类具有特殊含义。
  • 类名、接口名采用大小写混合的形式,即每个单词的首字母大写,其余小写,并且使用名词,如HelloWorld。
  • 变量名和方法名每个单词的首字母除了第一个单词小写外,其他都大写,如sortTest,并且方法名使用动词。
  • 常量名完全大写,并且单词间以下划线“_”隔开,如MAX_SIZE。
  • 变量名应该能够表示一定的含义,因此尽量使用多个字符作为变量,临时变量可以使用单个字符。

1.5 基本数据类型

java语言中共有4类8种基本数据类型,分别为:
逻辑型:boolean。
文本型:char。
整形:byte,short,int,long。
浮点型:double和float。

1.5.1 逻辑型(boolean)
boolean类型数据有两种取值true和false,在机器中只占1位。boolean型变量的默认初始值为false。如:

boolean a = true;  //boolean类型变量a,初始值为true

与其他高级语言不同的是,java中布尔值和数字之间不能来回转换,即false和true不对应于任何零或非零的整数值。

1.5.2 文字型(char和String)
char是文字型的基本数据类型,而String是类不是基本数据类型。

  • char

字符是一个16位即2字节的Unicode(国际码)字符,必须用单引号引起来。如:

char mychar = 'C';

字符型变量的默认初始值是\u0000。
通常情况下,char类型的十六进制Unicode编码值可自动转换成等值的int类型值,并可与int类型数值进行运算;而int类型到char类型则需要强制类型转换。如下实例:char类型与int类型转换。

public class Test{
    public static void main(String[] args){
        int intVar = 1;
        char c = 'a';
        int sum = intVar + c;
        System.out.println("the char is :" + c);
        System.out.println("the char's Unicode is : \\u" + Integer.toHexString(c));
        System.out.println("the char to int :" + new Integer(c).toString());
        System.out.println("intVar + c = " + sum);
    }
}

执行结果:

the char is :a
the char's Unicode is : \u61
the char to int :97
intVar + c = 98
  • String

String不是基本数据类型而是一个类。字符串在java中表示一个对象。在java中表示字符串有两个类:String和StringBuffer,其中String表示的字符串不能修改,StringBuffer类型的字符串可以修改。字符串要用双引号引起来。java中的字符串不以’\0’为结束符。

String s = "good good test!";
String st = "what?";

1.5.3 整数类型(byte,short,int和long)
各整数类型长度及取值范围如下表:
3

java中所有整数类型都是有符号的整数类型,java没有无符号整数类型,并且所有整形变量的默认初始值为0。
整型常量可以有四种形式:二进制、十进制、八进制和十六进制。八进制整数以0为前导;十六进制以0X或0x为前导。
整型常量的默认类型是int。如果要使用long类型,需要在数值后加L或l,建议用大写。

int sum = 100;

java中双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。
4

浮点类型的常量默认是double类型的。另外可以用F或f表示float类型的常量,用D或d表示double型常量。

float a = 12.5f;//因为浮点型默认为double,所以需要在后加一个f,声明为float型
double d = 123.4;

1.6 复合数据类型

java中4类8中基本数据类型,都是内置类型,但是在很多开发中,仅用这几种数据类型是远远不够的。基于此,java设计了一种复合数据类型。
一般将用户定义的新类型称为复合数据类型。基于面向对象概念,以类和接口的形式定义新类型。因此java中类和接口是两种用户定义的复合数据类型。
数据类型总结:
5

1.7 基本类型变量与引用类型变量

java中变量也有两种:基本类型和引用类型。
java中8种基本类型的变量称为基本类型变量,而类、接口和数组变量时引用类型变量。
变量用来不断存放同一类型的常量,并可以重复使用,变量的作用范围在一对{}之间有效。
定义变量的格式:

数据类型 变量名 = 初始值;

基本类型变量:包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个数字、一个字符或一个布尔值等。

引用类型变量:引用类型变量的值与基本类型变量不同,变量值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。
引用在别的语言中叫指针或内存地址。java不支持显式使用内存地址,而必须通过变量名对某个内存地址进行访问。
两种类型变量的区别:

  • 基本类型变量声明时,系统会直接给变量分配空间,因此可以直接操作。
int a;
  • 引用类型变量声明时,只是给该变量分配引用空间,并未分配数据空间,因此引用类型变量声明后不能直接引用。
Date  today ;
today.day  = 5;  //错误,today对象数据空间未分配

引用型变量在声明后必须通过实例化开辟数据空间后,才能对变量所指向的对象进行访问。

Date  today ;
today  = new Date();  //通过new关键字给today变量开辟数据空间

java中引用类型变量之间的赋值都是引用赋值。如:

Date  t1, t2 ; //在内存开辟两个引用空间
a = new Date(); //开辟Date对象的数据空间,并把该空间的首地址赋给a
b = a; //将a存储空间中的地址写到b的存储空间中

上边实例这样做了以后,a和b就指向同一内存空间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值