java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字
合法标识符
Java语言中,对于变量,常量,函数,语句块均有名字,我们统统称之为Java标识符.标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。
组成:Java标识符由数字,字母和下划线(_),美元符号($)组成(此处的字母并不局限于26个英文字母,而且可以包含中文字符、日文字符等)。Java语言支持Unicode6.2.0字符集,因此Java的标识符可以使用Unicode6.0.0所能表示的多种语言的字符。
标识符必须遵循以下规则
1. 标识符由26个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
2. 不能以数字开头,不能是关键字,也不能包含空格。
3. 严格区分大小写
4. 标识符的可以为任意长度
Java中的标识符命名规范
1. 包名:多个单词组成时所有字母小写(例:package com.itcast)
2. 类名和接口:多个单词组成时所有单词的首字母大写(例:HelloWorld)
3. 变量名和函数名:多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。
4. 常量名:多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)
注意:只是为了增加规范性、可读性而做的一种约定,标识符在定义的时候最好见名知意,提高代码阅读性。
可以使用java自带的函数判断每行字符串是否可以作为JAVA语法的合法标识符,例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static boolean valid(String str)
{
if(Character.isJavaIdentifierStart(str.charAt(0)))
// 如果第一个字符是Java合法的标识符,进入if语句
{
for(int i=1; i
// 从第二个标识符开始,逐个遍历
{
if(!Character.isJavaIdentifierPart(str.charAt(i)))
// 如果第i个标识符不是Java的合法标识符,返回false
{
return false;
}
}
// 如果标识符是合法的Java标识符,返回true
return true;
}
// 如果第一个字符不是Java合法的标识符,返回false
return false;
}
public static void main(String[] args) throws IOException {
/*
* BufferedReader对象只将回车看作输入结束
* Scanner对象把回车,空格,tab键都看作输入结束
*/
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String text = buffer.readLine();
// 先读取一行字符串
while(text != null){
// 读取的字符串为空,则结束循环
System.out.println(valid(text));
text = buffer.readLine();
}
}
}
java修饰符
java提供了很多修饰符,主要分为以下两类:
访问修饰符
非访问修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
访问控制修饰符
java中,可以使用访问控制符来保护对象类、变量、方法和构造方法的访问。
default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
修饰符
当前类
同一包内
子孙类(同一包)
子孙类(不同包)
其他包
public
Y
Y
Y
Y
Y
protected
Y
Y
Y
N/Y
N
default
Y
Y
N
N
N
private
Y
N
N
N
N
1、类修饰符
访问修饰符:公共类修饰符public
非访问修饰符:抽象类修饰符 abstract、最终类修饰符 final
(1)公共类修饰符public:java语言中类的访问控制符只有public即公共的,每个java程序有且只有一个类是public,其他外部类没有访问控制修饰符,具有包访问性。
(2)抽象类修饰符abstract :用abstract 修饰的类称为抽象类。
(3)最终类修饰符final:当一个类不能被继承时可用修饰符final修饰为最终类。
(4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。
2.方法修饰符
访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private。
非访问控制符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、同步方法控制符synchronized。
(1)抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实现。
(2)静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static的域。
(3)最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法,都被认为是最终方法。
(4)本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
(5)同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。
3.变量修饰符
访问控制符:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private
非访问控制符:静态域修饰符static 、最终域修饰符 final 、易失 ( 共享 ) 域修饰符volatile 、暂时性域修饰符transient
(1)公共访问控制符 public :用 public 修饰的域称为公共域。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。
(2)私有访问控制符 private : 用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。
(3)保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。
(4) 缺省默认修饰符 :没有访问控制修饰符或用修饰符 default修饰的成员变量可以被该类本身或同一包中的其他类访问。
(5)静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象。
(6)最终域修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的。
(7)易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符 volatile是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。通常 volatile 用来修饰接受外部输入的域。
8)暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变量,将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。
本部分参考于作者老鼠爱大米的文章,原文:https://blog.csdn.net/u012723673/article/details/80613557。
java中的关键字
关键字是编程语言里事先定义好并赋予了特殊含义的的单词,也称保留字。Java中一个有53个关键字。
数据类型:
Boolean int long short byte float double char class interface(接口)
Interface
用来定义一系列方法和常量,它可以被类实现,通过implements关键字。
流程控制:
if else do while for switch case default break continue return try (捕获异常) catch(处理异常) finally(有没有处理异常都执行)
Throw
运行用户抛出一个exception对象,或者任何实现throwable的对象。
Throws
用在方法的声明中用来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。
Return
用来结束一个方法的执行,,他后面可以跟一个方法声明中要求的值。
Case
用来定义一组分支选择,如果有某个值和switch中给出的值一样,就会从该分支开始实行。
Try
用来定义一个可能抛出异常的语句块。如果一个异常被抛出,一个可选的catch语句块会处理try语句中抛出的异常。同时一个finally语句会被执行,无论异常是否被抛出。
Catch
用来声明try语句中发生运行错误或非运行时异常时运行的一个块。
修饰符:
public protected private final void static strictfp (严格 精确) abstract(抽象的) transient(短暂) synchronized(线程 同步) volatile(易失) native(本地)
Abstract
用在类的声明中来指明一个类是不能实例化的,但是可以被其他类继承。一个抽象类可以使用抽象的方法,抽象方法不需要被实现,但需要在子类中被实现。
Synchronized
线程同步。
Volatile
用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。
动作:
package import(引入) throw(抛出一个异常对象) throws (声明一个异常对象 可能被抛出) extends(继承) implements(实现) this(本类) super(父类 超类) instanceof(实例) new
Super
父类。
This
用来代表它出现的类的一个实例。This可访问类变量或类方法。
参考于作者:国家一级键盘手操作表演艺术家,原文:https://blog.csdn.net/zianY/article/details/78738852
java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字相关推荐
- java接口与类相同不同_浅谈java的接口和C++虚类的相同和不同之处
C++虚类相当于java中的抽象类,与接口的不同之处是: 1.一个子类只能继承一个抽象类(虚类),但能实现多个接口 2.一个抽象类可以有构造方法,接口没有构造方法 3.一个抽象类中的方法不一定是抽象方 ...
- java程序的装载与检查_浅谈Java类型装载、连接与初始化
类型装载.连接与初始化 Java虚拟机通过装载.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.其中装载就是把二进制形式的Java class文件读入Java虚拟机中去;连接 ...
- java final类为什么不能继承_浅谈Java之终止继承:Final类和Fianl方法
前言 关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能. Final类 当关键字final用来修饰类时,其含义是该类不能再 ...
- java合并单元格的快捷键_浅谈java单元格合并的实现(转载)
摘要:本文主要叙述如何通过建立数据库模型(单元格模型).重载JTable的三个重要方法(getCellRect(),columnAtPoint(),rowAtPoint())和继承Jtable的渲染组 ...
- java线程池和线程实例化_浅谈Java 线程池原理及使用方式
一.简介 什么是线程池? 池的概念大家也许都有所听闻,池就是相当于一个容器,里面有许许多多的东西你可以即拿即用.java中有线程池.连接池等等.线程池就是在系统启动或者实例化池时创建一些空闲的线程,等 ...
- java为什么要分代回收_浅谈Java堆内存分代回收
1.概述 与C++不同的是, 在Java中我们无需关心对象占用空间的释放, 这主要得益于Java中的垃圾处理器(简称GC)帮助我们自动的进行对象占用空间的释放. 下面我们带着几个问题来学习: 堆内存是 ...
- python中的date的含义_浅谈python中的dateime
原文链接:http://www.cnblogs.com/lhj588/archive/2012/04/23/2466653.html Python提供了多个内置模块用于操作日期时间,像calendar ...
- java守护线程的使用场景_浅谈Java守护线程
一.在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 1.Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收 ...
- 简述java中流的概念和划分_浅谈Java中流的概念与用途
Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的 ...
最新文章
- electron打包可选择安装位置,可自动更新
- winformDatagridview无法编辑的问题
- python自学什么书比较好-19年学习Python有什么好的书籍推荐吗?
- vs简易计算机等于号代码,等于(=)vs.
- hikey970学习-003:DDK用户手册学习《Huawei HiAI DDK User Manual 》(1)
- PHP(阿里云短信验证码)
- 用python对我和女票的聊天记录生成心形词云
- SSL2893 谷仓的安保
- MenuetOS小系统安装
- ipad未能与itunes连接到服务器,为什么无法连接到iTunes Store?iPhone/iPad解决方法
- 广州Java工程师平均薪资_【广州恒生电子工资】java开发工程师待遇-看准网
- css新特性:线性渐变详解(重复性线性渐变、径向渐变、重复性径向渐变的使用)
- 使用Visual Studio 2008 Express的C / C ++初学者调试指南
- MSF漏洞利用完成但无法创建会话的几种原因
- Java 文字版打斗游戏
- 冷原子量子计算机,量子计算新突破:在71个格点超冷原子量子模拟器中求解施温格方程...
- 有哪些设备管理软件值得推荐?
- 北风网java微信_北风网微信第一季菜单5
- java 实现 setTimeout 和 setInterval 效果
- 深度学习“三巨头”、图灵奖得主 Yann LeCun:我没有天赋,所以才追随聪明人
热门文章
- python中axis是什么意思_Python axis的含义
- sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用
- 【控制】传递函数拉氏变化如何与时间域结合使用举例
- 第十一章 机器学习系统设计-机器学习老师板书-斯坦福吴恩达教授
- 第三章 线性代数回顾-机器学习老师板书-斯坦福吴恩达教授
- 5.8 程序示例--线性分类-机器学习笔记-斯坦福吴恩达教授
- STM32 基础系列教程 30 - 文件系统
- STM32的8种GPIO输入输出模式深入详解
- 【笔记】windows10安装linux(ubuntu)双系统教程(可能是现今最简单方法)
- 【DIY】嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程请收下