Java关键字、标识符、常量、变量语法详解_java

一、关键字

关键字:被Java语言赋予特定含义的单词。组成关键字的字母全部小写。注:goto和const作为保留字存在,目前并不使用。main并不是关键字。

二、标识符

标识符:就是给类,接口,方法,变量等起名字时使用的字符序列。

组成规则:英文大小写字母、数字字符、$和_

注意事项:不能以数字开头、不能是Java中的关键字、区分大小写

我们通常会给下面的这些东西起一个标识符:

包、类或者接口、方法和变量、常量

三、注释

单行注释的格式: //注释文字

多行注释的格式: /* 注释文字 */

文档注释的格式:/** 注释文字 */

注:多行注释不能嵌套使用,而单行是可以的。

文档注释:被javadoc工具解析成一个说明书,面向对象部分的知识中会用到。

四、常量、进制和进制转换

常量:在程序执行的过程中其值不可以发生改变

Java中常量分类:

字面值常量自定义常量(面向对象部分讲)

1、常见常量:

字符串常量:用双引号括起来的内容

整数常量、

小数常量、

字符常量:用单引号括起来的内容

布尔常量:较为特有,只有true和false

空常量:null(数组部分讲解)

2、进制与转换:

Java针对整数常量提供了4种表现形式:二进制、八进制、十进制、十六进制。

八进制的整数以0开头,十六进制的整数以0x开头。

注:现在的计算机系统很少用八进制的了。二进制表示法太冗长,所以在程序中一般喜欢用十六进制

二进制与八进制的转换:

二进制与十六进制的转换:

3、有符号数据表示法:

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码:正数的反码与其原码相同;负数的反码是对其原码按照位取反,但符号位(最高位)不变。补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。

另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

五、变量

变量概述:在程序执行的过程中,在某个范围内其值可以发生改变的量

变量定义格式:数据类型 变量名 = 初始化值;

注:Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
变量按数据类型划分:

注:引用类型中还有一种特殊的null类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是Java中没有指针这个说法。

变量按被声明的位置划分:

局部变量:方法或语句块内部定义的变量成员变量:方法外部、类的内部定义的变量

六、八种基本数据类型和类型转换

1、计算机存储数据的基本单位:

字节(Byte)是:计算机文件大小的基本计算单位。

1个字节(Byte) = 8个位(Bit)

Bit意为“位”或“比特”,是计算机运算的基础;二进制中的一位,是二进制最小信息单位。二进位可以用来表示一个简单的正/负的判断,有两种状态的开关(如电灯开关)。

说明:

在内存计算过程中,字节少的数据运算速度更快;在硬盘存储中,字节少的数据类型也可充分存入更多的数据。

2、八种基本数据类型:

注:

(1)整数默认:int。声明long型常量必须在数字后面加‘l'或‘L' ,如: long l1 = 88888888888L; //必须加l否则会出错

(2)浮点型常量(小数)默认:double。声明一个float型常量,则需在数字后面加 f 或 F ,如:double d = 12345.6; //正确 float f = 12.3f; //必须加f否则会出错

(3)Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码。Java语言中的字符char可以存储一个中文汉字,因为java语言中的字符占用两个字节。

(4)boolean 类型适于逻辑运算,一般用于程序流程控制。

boolean 类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。

(5)byte、short在定义的时候,他们接收的其实是一个int类型的值。这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。
128:10000000
-128:10000000 (这里的1即是符号位,也是数值位)

使用变量注意事项:

作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。初始化值:没有初始化值不能直接使用在一行上建议只定义一个变量:可以定义多个,但是不建议

3、数据类型转换:

注:boolean类型不能转换为其他的数据类型

默认转换:(从小到大的转换)

byte,short,char—int—long—float—double

byte,short,char相互之间补转换,他们参与运算首先转换为int类型

强制转换:

目标类型 变量名=(目标类型)(被转换的数据);

总结:那么,我们到底用那种转换呢?

一般建议,最好不要随意使用强制类型转换,容易造成数据精度的损失。

(1)容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。

(2)有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

面试题:

A:下面两种方式有区别吗?
  float f1 = 12.345f;
  float f2 = (float)12.345;

答案:有区别:f1其实是通过一个double类型转换过来的;而f2本身就是一个float类型。

B:下面的程序有问题吗,如果有,在哪里呢?
  byte b1 = 3;
  byte b2 = 4;
  byte b3 = b1 + b2;
  byte b4 = 3 + 4;

答案:byte b3 = b1 + b2;是有问题的。因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。

常量相加,先把结果计算出来,然后看是否在byte的范围内,如果不是,才报错。

C:下面的操作结果是什么呢?
  byte b = (byte)130;

  System.out.println(b);

答案:-126

D:字符参与运算:是查找ASCII里面的值
  'a' 97
  'A' 65
  '0' 48
  System.out.println('a');
  System.out.println('a' + 1);

E:字符串参与运算:这里其实是字符串的拼接
  System.out.println("hello"+'a'+1);
  System.out.println('a'+1+"hello");
  System.out.println("5+5="+5+5);

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

注:这里的+不是加法运算,而是字符串连接符。

时间: 2024-11-10 09:59:44

Java关键字、标识符、常量、变量语法详解_java的相关文章

DOS批处理中%~dp0等扩充变量语法详解_DOS/BAT

有时候我们看到别人使用%~dp0 ~是扩展的意思,相当于把一个相对路径转换绝对路径 %0代指批处理文件自身 %1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推 %~d0 是指批处理所在的盘符,其中d代表drive %~p0 是指批处理所在的目录,其中p代表path %~dp0 是批处理所在的盘符加路径 cd %~dp0 就是进入批处理所在目录了 详细解释还可参考命令 call /? DOS批处理中%~dp0表示什么意思 (注: %0 就是该 batch 文件的文件名) 这句的意

Java中volatile关键字的作用与用法详解_java

volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以重获生机. volatile 关键字作用是,使系统中所有线程对该关键字修饰的变量共享可见,可以禁止线程的工作内存对volatile修饰的变量进行缓存. volatile 2个使用场景: 1.可见性:Java提供了volatile关键字来保证可见性. 当一个共享变量被volatile修饰时,它会保证修

java 装饰模式(Decorator Pattern)详解_java

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能. 我们通过下面的实例来演示装饰器模式的使用.其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类. 实现 我们将创建一个 Shape 接口和实现了 Shape 接口的实体类.然后我们创建一个实现了 Shape 接口的抽象装饰类Sha

多用多学之Java中的Set,List,Map详解_java

很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进拉出,迭代遍历,蛮方便的. 也不知道从什么时候开始慢慢的代码中就经常会出现HashMap和HashSet之类的工具类.应该说HashMap比较多一些,而且还是面试经典题,平时也会多看看.开始用的时候简单理解就是个键值对应表,使用键来找数据比较方便.随后深入了解后发现 这玩意还有点小奥秘,特别是新版本的JDK对Has

Java并发编程总结——慎用CAS详解_java

一.CAS和synchronized适用场景 1.对于资源竞争较少的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源:而CAS基于硬件实现,不需要进入内核,不需要切换线程,操作自旋几率较少,因此可以获得更高的性能. 2.对于资源竞争严重的情况,CAS自旋的概率会比较大,从而浪费更多的CPU资源,效率低于synchronized.以java.util.concurrent.atomic包中AtomicInteger类为例,其getAn

Java Web请求与响应实例详解_java

Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletResponse.其中HttpServletRequest封装HTTP请求消息,HttpServletResponse封装HTTP响应消息.需要注意的是,Web服务器运行过程中,每个Servlet都会只创建一个实例对象,不过每次请求都会调用Servlet实例的service(ServletRequest

Java编程之文件读写实例详解_java

本文实例讲述了Java编程中文件读写的方法.分享给大家供大家参考,具体如下: Java中文件读写操作的作用是什么? 回答这个问题时应该先想到的是Java只是一门语言,我们的一种使用工具而已,这样答案就明晰了,就是将外来的各种数据写入到某一个文件中去,用以保存下来:或者从文件中将其数据读取出来,供我们使用.就如下电影过程,从网络资源中下载一部电影保存于你电脑中(写文件),当你想看的时候就用播放器打开(读文件). Java中如何对文件进行读写操作? 先理一理,Java中的流分两种,字节流和字符流,其

关于java中构造函数的一些知识详解_java

java的构造函数是一个非常重要的作用,首先java里的构造函数是可以重载的,而且因为也是可以继承在父类的构造函数,所以在子类里,首先必然是调用父类的构造函数.可以看下面的两个例子来对比: public class Test { public static void main(String args[]) { B b = new B(100); } } class A { public A() { System.out.println("A without any parameter"

基于java涉及父子类的异常详解_java

java中的异常涉及到父子类的问题,可以归纳为一句话:子类的构造函数抛出的异常必须包含父类的异常,子类的方法可以选择抛出"范围小于等于"父类的异常或不抛出异常. 1. 为什么构造函数必须抛出包含父类的异常? 在<thingking in java>中有这么一段话: 异常限制:当覆盖方法时,只能抛出在基类方法的异常说明中列出的那些异常 异常限制对构造器不起作用,你会发现StormyInning的构造器可以抛出任何异常,而不必理会基类构造函数所抛出的异常.然而因为必须构造函数必