/*
 1、在java程序当中,使用editplus工具进行代码编写的时候,
 有一些单词是蓝色,有的是红色,有的是绿色,有的是黑色,
 有的是紫色,有的是粉色…2、注意:在java源代码中,在editplus工具中显示的高亮颜色为黑色是,
这个单词属于标识符。

3、标识符可以标识什么?
	可以标识:
		类名
		方法名
		变量名
		接口名
		常量名
		......

4、标识符:凡是程序员自己有权利命名的单词都是标识符。

5、标识符可以随意编写吗,有命名规则吗?
	什么是命名规则?
		命名规则属于语法机制,必须遵守,不遵守命名规则标识符不符合语法,
		这样,编译器
	规则1:标识符只能由数字、字母(包括中文)、下划线_、美元符号组成,
	不能含有其他符号。

	规则2:标识符不能以数字开头.

	规则3:关键字不能做标识符。例如:public class static void这些蓝色字体
	都是关键字,关键字是不能做标识符的。

	规则4:标识符是严格区分大小写的。A和a不一样

	规则5:标识符理论上是没有条件限制的*/
public class IdentifierTest{
 // main是一个方法的名称,属于标识符
 // 但是这个标识符不能修改,因为这个main是SUN固定死的。
 public static void main(String[] args){
 }
 // dosome是一个方法名,可以改成其他名字
 public static void dosome(){
 // k是一个变量名
 int k=100;
 // age是一个变量名 
 int age=20;
 }
 }/*
 编译报错,错误信息是:
 错误:需要<标识符>
 错误原因:编译器检测到class这个单词,那么编译器会从class这个
 单词后面找类名,而类名是标识符,编译器找了半天没有找到标识符,
 因为123ABC不是标识符,所以编译器提示的错误是:需要<标识符>解决办法:
		将123ABC修改为合法的标识符。*/
 class 123ABC{
 }//类名是标识符,标识符"中"不能有空格
 /*
 编译器的错误信息是:
 错误:需要‘{’
 编译器检测到class,然后找到class后面的标识符,编译器找到了一个合法的标识符
 叫做“hello”,然后编译器继续往后找“{”,结果没有找到“{”,所以报错了。解决办法:
	方法1:是把world删除
	方法2:把空格删除*/
 class hello world{
 }class _A{
 }// 关键字不能做标识符
 /*
 class public{
 }
 */// public1不是关键字
 class public1{
 }class B{
 }
 class b{
 }
 // 虽然java中的标识符严格区分大小写
 // 但是对于类名来说,如果java源文件中同时出现了:A类和a类
 // 那么谁在前就生成谁。大家最好不要让类名“相同”。
 // 最好类名是不同的。
 class HelloWorld{
 }class Helloworld{
 }
 /*
 题目:
 1.创建一个java文件,起名123.java可以吗?
 可以,123并不是标识符,只是一个文件名。
 只不过在123.java文件中无法定义public的类。标识符除了命名规则之外,还有命名规范:
	1、命名规则和命名规范有什么区别?
		命名规则是语法,不遵守就会编译报错。
		命名规范知识说,我们尽量按照统一的规范来进行命名,不符合规范也行,
		代码是可以编译通过的,但是你的代码风格和大家不一样,这个通常也是
		不允许的。
		
		规则类似于:现实世界中的法律。
		规范类似于:现实世界中的道德。
		
		统一按照规范进行的话,代码的可读性很好。
		代码很容易让其他开发人员理解。
	
	2、具体的命名规范是哪些呢?
		
		规范1:见名知意(这个标识符在起名的时候,最好一看这个单词就知道什么意思。)
		
		规范2:遵循驼峰命名方式,什么是驼峰(一高一低,一高一低....)
			驼峰有利于单词于单词之间很好的进行分隔
			IdentifierTest,这个一眼就能看出来是2个单词。
		
		规范3:类名、接口名有特殊要求
			类名和接口名首字母大写,后面每个单词首字母大写
		
		规范4:变量名和方法名有特殊要求
			变量名和方法名首字母小写,后面每个单词首字母大写

		规范5:所有“常量”名:全部大写,并且单词与单词之间采用下划线衔接。
			USER_AGE:用户年龄
			MATH_PI:固定的常量3.1415926......*/
public class IdentifierTest2{
 public static void main(String[] args){// age和name让读者一眼就看出这两个标识符代表的含义,可读性很强
	int age=20;
	int name="zhangsan"
}}
 class T{
 }// 在123.java文件中定义public的类行吗?
 // 不行,因为之前有一条规则是这样说的:public的类可以没有
 // 但是如果有public的类,也只能有一个,并且public的类的
 // 名字必须和源文件保持一致。public class hello{
 // 123.java:9: 错误: 类 hello 是公共的, 应在名为 hello.java 的文件中声明
 }public class 123{
 // 但是最终尴尬了,因为123不能做标识符。是错误的标识符。
 }