本篇文章给大家谈谈java匿名类要以分号结束,以及Java 匿名方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、java类的最后要加分号吗2、java类的问题3、java代码结尾加分号和不加分号有什么区别4、java 匿名类5、java匿名内部类6、怎样判断java匿名类
java类的最后要加分号吗
java语句为什么时候要加问号?因为它是一个语句,比如
int i;
Test t=new Test();
t.te();
需要加分号的时候说明它也形成了一个语句,一般就是匿名内部类了
比如说
abstract class A
{
abstract public void fun1();
}
class Outer
{
public static void main(String [] args)
{
class Inner extends A
{
public void fun1()
{
System.out.println(“implement for fun1”);
}
}
new Outer().callInner(new Inner());
}
public void callInner(A a)
{
a.fun1();
}
}
这里面就新建了一个实现了A接口的类,然后直接实例化并返回它,总之
java类的问题
new FileFilter() {
@Override//从写accept方法
public boolean accept(File directory) {
// TODO Auto-generated method stub
if (directory.getName().endsWith(“.txt”))
return true;
return false;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return null;
}
}
这部分就是匿名类,是实现FileFilter接口实现的类,类中的方法实现由你自己写代码。
结尾的分号,表示这一句对象申明的结束
java代码结尾加分号和不加分号有什么区别
java代码结尾加分号和不加分号有什么区别
public class 为什么用分号 { public static void main(String[] args) { int sum=5; while(sum1);有分号,这里会是一个死循环! { 这里是访问不到的! System.out.println(sum–); } 这里也访问不到,因为,上面是一个死循环,取消上面条件表达式,就可以访问了! while(sum1)无分号; { System.out.println(sum–); } 因为第一个循环的原因,这里也没办法输出! System.out.println(“程序结束!”); }}输入法故障,无意中会简繁切换,见谅!
在css样式中如:(font-weight:bold;)bold后面加分号和不加分号有什么区别?
如果是最后一个属性就可以不用加分号,如果不是就要加,不过为了标准,建议加上去。
例子:
#id{font-weight:bold; line-height:20px;} 这样就必须加
#id{line-height:20px; font-weight:bold} 这样可以不用
#id{font-weight:bold} 这样也可以不用
java中for循环后面加分号和不加分号什么区别
带分号说明for循环结束了,循环后面不算大括号的第一个分号就是结束
请问c语言中for循环后面加上分号和不加分号有什么区别吗?
加上分号,for循环就变成了空循环,一直循环,不输出任何东西,直到不满足循环条件,退出循环,才执行下一条语句。
在C语言中,for语句的后面加分号和不加分号有何不同,该分号有什么作用?
for语句有两种用法,一种是跟 单个语句 ,一种是跟 代码体 。
在跟 单个语句 时,由于在C语言语句默认是以分号结尾的,程序会将for (;;)之后直到 第一个分号 的代码视为循环体来执行,例如下面三种情况:
for (int i=0; i10; i++) foo1();for (int i=0; i10; i++) foo1();for (int i=0; i10; i++) foo1();
上面三种写法,都是调用foo1()函数10次。在下面一种情况里,程序只会将foo1()函数循环调用10次,而不会将foo2()列入循环中,因为分号for语句在foo2()之前就已经结束了:
for (int i=0; i10; i++) foo1(); foo2();
特别要提的是下面的两种写法,这两种写法的for语句的循环体都为空,程序都不会将foo2()列入循环,因此foo2()只会执行一次。这也是初学者常见的书写错误。
for (int i=0; i10; i++) ; foo2();for (int i=0; i10; i++) ; foo2();
除了跟单个语句外,for语句还可以跟 { } 圈起来的 代码体 ,如下面的例子:
for (int i=0; i10; i++) { foo1(); foo2();}
在这种情况下,for语句可以不以分号结尾,程序会将代码体内的所有语句循环10次。
在C语言中的for语句中加分号与不加分号有啥区别
分号代表语句结束假设你有一个数组int a[5];那么你可以这样给数组赋值for(int i = 0;i
java内部类什么时候加分号?什么情况不加分号?
java语句为什么时候要加问号?因为它是一个语句,比如
int i;
Test t=new Test();
t.te();
需要加分号的时候说明它也形成了一个语句,一般就是匿名内部类了
比如说
abstract class A
{
abstract public void fun1();
}
class Outer
{
public static void main(String [] args)
{
class Inner extends A
{
public void fun1()
{
System.out.println(“implement for fun1”);
}
}
new Outer().callInner(new Inner());
}
public void callInner(A a)
{
a.fun1();
}
}
这里面就新建了一个实现了A接口的类,然后直接实例化并返回它,总之
我们定义一个类的代码的时候是不需要分号的.但是实例化一个类的时候是要的,因为这算一个语句了
SQL*PLUS/iSQL*PLUS命令结尾可以不加分号(;)吗?
可以的,可以打一个斜扛/代替
javascript到底加不加分号
分号加与不加完全取决于个人习惯,但为了代码稳定(解析出错)还是建议使用分号断句。
JavaScript有自动加分号的规则:
1.当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号。
2.当有}时,如果缺少分号,会补分号。
3.当程序源代码结束时,如果缺少分号,会补分号。
结论:
1.在return、break、continue、后自增、后自减五种语句中,换行符可以完全替代分号的作用。
2.var if do while for continue break return with switch throw try debugger几种关键字开头的语句,以及空语句,上一行加不加分号影响不大。
3.凡表达式语句和函数表达式语句,后面不加分号非常危险,情况极其复杂。
4.凡(和[开头的语句,前面不加分号极度危险。
gis空间投影坐标加代号和不加代号有什么区别
(一)地理信息系统(Geographic Information System或 Geo-Information system,GIS)有时又称为“地学信息系统”。它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。位
置与地理信息既是LBS的核心,也是LBS的基础。一个单纯的经纬度坐标只有置于特定的地理信息中,代表为某个地点、标志、方位后,才会被用户认识和理
解。用户在通过相关技术获取到位置信息之后,还需要了解所处的地理环境,查询和分析环境信息,从而为用户活动提供信息支持与服务。
地理信息系统(GIS,Geographic Information System)是一门综合性学科,结合地理学与地图学以及遥感和计算机科学,已经广泛的应用在不同的领域,是用于输入、存储、查询、分析和显示地理数据的计算机系统,随着GIS的发展,也有称GIS为“地理信息科学”
(Geographic Information Science),近年来,也有称GIS为;地理信息服务;(Geographic
Information
service)。GIS是一种基于计算机的工具,它可以对空间信息进行分析和处理(简而言之,是对地球上存在的现象和发生的事件进行成图和分析)。
GIS 技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。
(二)地图数据库(cartographic database)是以地图数字化数据为基础的数据库,是存储在计算机中的地图内容各要素(如控制点、地貌、土地类型、居民地、水文、植被、交通运输、境界等)的数字信息文件、数据库管理系统及其它软件和硬件的集合。
java 匿名类
abstract class Animal {
public abstract void cry();
}
class TestCry {
public void testCry(Animal animal) {
animal.cry();
}
}
public class Example{
public static void main(String[] args) {
TestCry cry = new TestCry () ;
cry.testCry(new Animal (){
public void cry() {
System.out.println(“Cat is crying!”);
}
});
cry.testCry(new Animal (){
public void cry() {
System.out.println(“Dog is crying!”);
}
});
// … 省略其他
}
}
先看段伪代码
abstract class Father(){
….
}
public class Test{
Father f1 = new Father(){ …. } //这里就是有个匿名内部类
}
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class SonOne extends Father{
… //这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public class Test{
Father f1 = new SonOne() ;
}
java匿名内部类
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new 类或接口 类的主体 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
java 代码
interface pr
{
void print1();
}
public class noNameClass
{
public pr dest()
{
return new pr(){
public void print1()
{
System.out.println(“Hello world!!”);
}
};
}
public static void main(String args[])
{
noNameClass c=new noNameClass();
pr hw=c.dest();
hw.print1();
}
}
pr也可以是一个类但是你外部调用的方法必须在你的这个类或接口中声明外部不能调用匿名类内部的方法
Java中内部匿名类用的最多的地方也许就是在Frame中加入Listner了吧。
如下:
java 代码
import java.awt.*;
import java.awt.event.*;
public class QFrame extends Frame {
public QFrame() {
this.setTitle(\”my application\”);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
this.setBounds(10,10,200,200);
}
}
内部匿名类,就是建立一个内部的类,但没有给你命名,也就是没有引用实例的变量。
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}
new 是建立一个 WindowAdapter对象 ,后面一个 {} 表示这个括号中的操作作用于这个默认的对名象,而上面的Java程序中后面是一个函数体。
这个用法的作用是:创建一个对象的实例,并且 override 它的一个函数。打开 WindowAdapter 的代码可以发现。它是一个抽象类。它是对 WindowListener 接口的一个实现。Frame.addWindowListner(); 的参数是一个 WindowListner ,而实现上是传一个从WindowAdapter 派生出的一个匿名类。
1.怎样判断一个匿名类的存在啊?看不见名字,感觉只是父类new出一个对象而已,没有匿名类的名字。
先看段伪代码
abstract class Father(){
….
}
public class Test{
Father f1 = new Father(){ …. } //这里就是有个匿名内部类
}
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class SonOne extends Father{
… //这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public class Test{
Father f1 = new SonOne() ;
}
2.匿名内部类的注意事项
注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。
在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
·内部类只能访问外部类的静态变量或静态方法。
匿名类和内部类中的中的this :
有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名
3.匿名内部类的作用
Java的内部类和C++中的嵌套类有本质的不同:C++的嵌套类没有指向包装类的句柄。仅仅表达一个封装的概念;但是Java的内部类不同,它可以访问包装类的成员(这表示它拥有指向包装类的句柄)。
匿名内部类是内部类的一种简化写法:return new Wrapper {
…
};
等价于:Wrapped extends Wrapper {
…
}
return new Wrapped();
难道匿名内部类就只这一点作用吗?
考虑一下这样的case:
interface ICount {
int count();
}
class Parent {
int i = 0;
int count() {
return i++;
}
}
有一个类Child,它既想继承Parent的count()方法,又想实现ICount接口中的count方法,这个时候怎么办呢?内部类就可以大显身手了:
class Child extends Parent {
ICount getCount() {
return new ICount {
int i = 0;
int count() {
return (i *= 2);
}
}
}
}
至于你说的只有一个方法或者必须有返回值,这个倒是没有在语法上规定 , 所以应该不存在这一说法。
怎样判断java匿名类
先看段伪代码
abstract
class
Father(){
….
}
public
class
Test{
Father
f1
=
new
Father(){
….
}
//这里就是有个匿名内部类
}
一般来说,new
一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new
出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new
的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new
的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class
SonOne
extends
Father{
…
//这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public
class
Test{
Father
f1
=
new
SonOne()
;
}
关于java匿名类要以分号结束和Java 匿名方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。