java 类 $是什么意思(java 中带$的变量是什么意思)
老铁们,大家好,相信还有很多朋友对于java 类 $是什么意思和java 中带$的变量是什么意思的相关问题不太懂,没关系,今天就由我来为大家分享分享java 类 $是什么意思以及java 中带$的变量是什么意思的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
java 中带$的变量是什么意思
在Java中,带$的变量通常是由编译器生成的内部类或匿名类的实例变量名。当使用内部类或匿名类时,编译器为这些类生成了额外的代码,在生成的字节码中使用了与普通类不同的标识符命名规则,带$的变量名是其中的一种。以"$"符号开头的变量名是由编译器生成的,用于区分内部类和外部类的成员变量。例如,对于名为Outer的外部类中的名为Inner的内部类,在编译器内部会生成名为Outer$Inner的类名,对应的实例变量名为this$0,表示Inner类的引用所在的Outer类的实例变量。$符号还可以用于分隔枚举常量名称,如Enum$1表示第一个枚举常量。
Java的概念和定义是什么
基础概念
1.关键字和保留字
关键字:就是java语言中已经事先定义好具有特殊含义的名字。
保留字:目前java语言中还没有使用(暂时没有特殊含义),但是java后期可能会使用
2.标识符
标识符的作用?
用于给变量、常量、类、包和方法取名的规则。
标识符的规则:
由数字、字母、下划线和$组成,但是开始不能为数字。
标识符不能是关键字或保留字。
标识符对长度没有任何限制。
补充:因为java采用的是unicode编码,所以标识符还可以是中文,但是不建议使用。
命名规范
类名:大驼峰。每个单词首字母都是大写。例如:VariableDemo
变量名、方法名:小驼峰。首单词字母小写,其余单词字母大写。例如:userName
常量名:全部单词大写,多个单词以下划线连接。例如:MAX_VALUE
包名:单词全部小写。
3.变量
变量的本质:变量在内存中开辟一块内存空间(容器),用来存储数据的容器。
变量声明的本质:在内存中开辟一块指定大小的内存空间,用于准备存储指定类型的数据。(数据类型变量名;)
变量赋值的本质:通过变量名找到内存中的存储空间,然后把等号右边的数据存入该内存中间中。(变量名=数据;)
"=",赋值运算符,把等号右边的数据赋值给等号左边的变量
赋值的数据类型必须和声明变量的数据类型保持一致。
赋值的数据类型必须和声明变量的数据类型保持一致。
只声明未赋值的局部变量不能直接使用,因为没有初始值。
在同一个作用域中,不能声明相同名的变量。
变量名的命名必须遵守“标识符”规则,并且还需遵守“小驼峰”命名规范
没有声明的变量不能直接使用,因为该“变量”什么都不是。
4.常量
常量和变量的对比
常量:只能赋值一次。
变量:可以重复多次执行赋值操作。
固定值常量
整数常量:10, 20,....
小数常量:123.45, 3.1415926,...
字符常量:'a','1','我',...(使用单引号包裹的一个字符,我们称之为字符常量)
布尔常量:true和false
字符串常量:"hello world","","sxt",...(使用双引号包裹的内容,都属于字符串常量)
引用数据类型常量:null
使用final关键字修饰的常量
常量声明语法:final数据类型常量名;
常量名的命名规范:单词全部大写,多个单词以下划线连接。
常量名的命名规则:必须遵守“标识符”的命名规则。
5.常见的转义字符
\t,制表符,类似于按下tab键
\n,换行符,类似于按下enter键
\",展示的时候,只显示输出"
\',展示的时候,只显示输出'
\\,展示的时候,只显示输出\
java 含有美元符号的类名意义是什么
java中的标识符是一个字符序列,分为两类:
1.用户自定义的,用来标识常量、变量、文件、类和方法的名字。
2.关键字,有专门用途的单词。
通常所说的标识符指用户自定义使用的标识符。一个有效的标识符必须以字母(A~Z、a~z)、下划线“_”或美元符号“$”开头,后面可以包含字母、数字、下划线和美元符号。
Java语言对标识符的有效字符个数没有限制,但Java语言对大小写敏感。
用户定义的标识符不能与关键字相同。
标识符的命名要有利于程序的可读性,通常软件人员或软件开发公司都有一些约定。
1、表示常值的标识符全部用大写字符,例如:RED。
2、表示类名的标识符用大写字符开始,例如:MyCar。
3、表示公有方法和实例变量的标识符用小写字母开始,后面的描述性词则以大写开始。例如:getCurrentValue。
4、表示私有的或局部的变量的标识全部用小写字符。例如:next_value。
5、在标识符中不用或少用美元符号,因为在链接C代码时,需要使用美元符号来链接库例程。
java 中的内部类和匿名内部类都是怎么回事 该怎么用
1、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。
几种内部类的共性:
A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
B、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
2、成员内部类:形式如下
class Outer{
class Inner{}
}
编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。
3、方法内部类。
顾名思义,把类放在方法内。
class Outer{
public void doSomething(){
class Inner{
public void seeOuter(){
}
}
}
}
A、方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
B、方法内部类对象不能使用该内部类所在方法的非final局部变量。
因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。
下面是完整的例子:
class Outer{
public void doSomething(){
final int a=10;
class Inner{
public void seeOuter(){
System.out.println(a);
}
}
Inner in= new Inner();
in.seeOuter();
}
public static void main(String[] args){
Outer out= new Outer();
out.doSomething();
}
}
4、匿名内部类。
顾名思义,没有名字的内部类。表面上看起来它们似乎有名字,实际那不是它们的名字。
A、继承式的匿名内部类。
class Car{
public void drive(){
System.out.println("Driving a car!");
}
}
class Test{
public static void main(String[] args){
Car car= new Car(){
public void drive(){
System.out.println("Driving another car!");
}
};
car.drive();
}
}
结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。
B、接口式的匿名内部类。
interface Vehicle{
public void drive();
}
class Test{
public static void main(String[] args){
Vehicle v= new Vehicle(){
public void drive(){
System.out.println("Driving a car!");
}
};
v.drive();
}
}
上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。
C、参数式的匿名内部类。
class Bar{
void doStuff(Foo f){}
}
interface Foo{
void foo();
}
class Test{
static void go(){
Bar b= new Bar();
b.doStuff(new Foo(){
public void foo(){
System.out.println("foofy");
}
});
}
}
5、静态嵌套类。
从技术上讲,静态嵌套类不属于内部类。因为内部类与外部类共享一种特殊关系,更确切地说是对实例的共享关系。而静态嵌套类则没有上述关系。它只是位置在另一个类的内部,因此也被称为顶级嵌套类。
详细内容请见:http://hi.baidu.com/honglin_bd/blog/item/fa60c4d3866f972933fa1c87.html
关于java 类 $是什么意思的内容到此结束,希望对大家有所帮助。