精华内容
下载资源
问答
  • 面试题:下面哪个对类的声明错误的? A、class MyClass extends MySuperClass1,MySuperClass2{} B、public class MyClass{} C、abstract class MyClass implements YourInterface1,YourInterface2{} D、private...

    题目:

    面试题:下面哪个对类的声明是错误的?

    A、class MyClass extends MySuperClass1,MySuperClass2{}
    
    B、public class MyClass{}
    
    C、abstract class MyClass implements YourInterface1,YourInterface2{}
    
    D、private class MyClass{}
    
    E、class MyClass extends MySuperClass implements YourInterface{}
    

    结果:A

    解释:

    A:类只支持单继承,所以A错误。

    B:public是类修饰符,class表示这是个类,MyClass是类名,B正确。

    C:abstract是抽象类的类修饰符,class表示这是个类,MyClass是类名,类支持多实现,并且前面的public可以写可以不写,如果写的话需要保证文件名和类名一致,C正确。

    D:内部类可以使用public、protected、默认修饰符、private修饰,所以D正确

    E:可访问控制符可以不写,类支持单继承多实现,所以E正确

    展开全文
  • 下面重载乘法运算符的函数原型声明中正确的是: 正确答案: A B D 你的答案: D (错误) MyClass operator *(double ,MyClass); MyClass operator *(MyClass ,MyClass); MyClass operator *...

    下面重载乘法运算符的函数原型声明中正确的是:

    正确答案: A B D   你的答案: D (错误)

    MyClass operator *(double ,MyClass);
    MyClass operator *(MyClass ,MyClass);
    MyClass operator *(double ,double);
    MyClass operator *(MyClass ,double);


    答案应该是ABD
    c++中规定,重载运算符必须和用户定义的自定义类型的对象一起使用。

    展开全文
  • 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。也就是说,非RuntimeException异常类或者其子类的的异常都要声明捕捉。只有RuntimeException 或者是其子类的异常...

    RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

    可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

    也就是说,非RuntimeException异常类或者其子类的的异常都要声明捕捉。只有RuntimeException 或者是其子类的异常是不需要进行声明捕捉的。

    Throwable

    • Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception 。
    • Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于JVM 层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
    • Exception :表示可恢复的例外,这是可捕捉到的。

    Java 提供了两类主要的异常 :runtime exception 和 checked exception 。

    checked exception

    checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。

    runtime exception

    runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机 接管。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。

    出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由 Thread.run()抛出 ,如果是单线程就被 main() 抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是 Exception 的子类,也有一般异常的特点,是可以被 Catch 块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

    如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。 在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常 ,或者是通过对异常的处理显式的控制程序退出。

    异常处理的目标之一就是为了把程序从异常中恢复出来 。

    转载至:http://blog.csdn.net/u014401141/article/details/52984853

    展开全文
  • 关于C语言隐式函数声明的基本问题,请参见我的博文万恶之源:C语言中的隐式函数声明下面是最近遇到的一个实例之一。 client_sock = accept(server_sock, (struct sockaddr*)&client_name, &client_name_len); ...

    关于C语言隐式函数声明的基本问题,请参见我的博文万恶之源:C语言中的隐式函数声明。 下面是最近遇到的一个实例之一。

            client_sock = accept(server_sock, (struct sockaddr*)&client_name, &client_name_len);
            printf("from %s:%d\n", inet_ntoa(client_name.sin_addr), client_name.sin_port);

    上述代码段摘自一个网络侦听程序,功能就是打印出客户端的IP地址和端口号。出现的症状是一运行就报段错误(segment Fault)。

    网上有很多文章提到了解决方式,但是却没有分析其问题产生的原因。这里我们将彻底分析其原因,并给出解决此类问题的终极方法。

    1 原因分析

    inet_ntoa()这个函数的调用出了问题,是万恶之源。在万恶之源:C语言中的隐式函数声明中我们说过,C语言编译器对于没有声明原型的函数,通通作为返回类型为整数的函数来处理,参数的类型则由调用的实参自动提升后确定。例如:

    non_exist_function(12, 'c');

    在编译时,这个没有事先声明的函数将被当作如下形式:

    int non_exist_function(int,int);

    注意,’c’(char)被提升为了int。

    现在回到我们的代码上来。

    inet_ntoa(client_name.sin_addr), client_name.sin_port)

    将会被当作:

    int inet_ntoa(addr_in, unsigned short);

    然而实际上真正的inet_ntoa的原型定义在了

    extern char *inet_ntoa (struct in_addr __in);

    这样返回值本来是指针类型,却被截断成了int类型。对于32位系统来说,由于指针类型和int类型的大小都是32位,恰好不会出现截断的情况。这也是为什么上述代码在32位系统下编译运行不会出现问题的原因。

    然而到了64位系统下,char*是64位,int仍然是32位,就出现了截断问题。

    然而由于printf(char*, …)是个变参函数,所以调用它时,编译器不会检查可变参数的数据类型,而是按照实参类型进行准备参数入栈。相当于

     printf("from %s:%d\n", 123, 8080);

    这样指示符%s对应的第一个参数的类型却是int,从而导致printf()内部在通过va_arg()提取参数时产生错误,最终导致了段错误。

    如果把上述代码改写为:

    client_sock = accept(server_sock, (struct sockaddr*)&client_name, &client_name_len);
    char* s = inet_ntoa(client_name.sin_addr);
    printf("from %s:%d\n", s, client_name.sin_port);

    编译器就会给出警告信息:

    warning: initialization makes pointer from integer without a cast [enabled by default]

    这样程序员就容易发现存在的隐式函数声明。
    然而我们的实际代码确实非常简洁的一行代码,导致编译器不会给出警告。

    * 隐式函数声明+printf()将会导致非常隐蔽的错误!*

    2 终极解决方案

    GCC有个开关名为: -Wimplicit-function-declaration。只要把这个开关打开就会对所有的隐式声明函数的调用发出警告。

    [smstong@cf-19 ~]$ gcc -Wimplicit-function-declaration  1.c
    1.c: In functionmain’:
    1.c:61:3: warning: implicit declaration of functioninet_ntoa’ [-Wimplicit-function-declaration]
       printf("from %s:%d\n", inet_ntoa(client_name.sin_addr), client_name.sin_port);

    这种警告比错误还严重!代码一定要彻底清除这种警告。

    知道了原因,解决方法异常简单,只要把包含函数原型声明的头文件包含进来就可以了。

    #include <arpa/inet.h>
    展开全文
  • 下列的符号常量定义中,错误的定义是() A const M = 10 B const int M = 10 C const char ch D const bool mark = true 我觉得A和C都啊!一个没有声明一个没有初始化!
  • 下面关于Java接口的说法错误的是() A、一个Java接口是一些方法特征的集合,但没有方法的实现 B、Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为 C、Java接口中可以声明私有成员 D、Java接口不能...
  • 声明包名时package开头的p报错(字母p下面有红线)。 错误发生原因: 重新引入某些包和类之后就会出现这种情况。 解决方式: 鼠标悬浮在p下面的红线上,点击出现的提示,在build path里面重新配置jdk版本(注意...
  • vs,c++编译代码的时候,遇到很奇怪的问题,明明在前面,已经声明过变量,编译的时候仍然报 未声明的标识符错误,定位错误地方,在赋值之前,明明定义过变量了啊,非常疑惑,下面贴上代码,火眼金睛的你能不能找到...
  • 下面有关final,finally,finalize的区别描述错误的是() A、如果一个类被声明为final,意味着它不能在派生出新的子类,不能作为父类被继承 B、如果一个方法被声明为final,可以被覆盖 C、finally在异常处理时提供...
  • C++中 在此作用域中尚未声明错误解决
  • 下面有关java final的基本规则,描述错误的是? Afinal修饰的类不能被继承 Bfinal修饰的成员变量只允许赋值一次,且只能在类方法赋值 Cfinal修饰的局部变量即为常量,只能赋值一次。 Dfinal修饰的方法不允许被子类...
  • 错误C2027:使用了未定义类型、两个类之间相互引用成员、向前声明错误C2027:使用了未定义类型向前声明单独编译两个类之间相互引用成员通过单独编译和向前声明方法实现两个类之间相互引用成员 错误C2027:使用了未定义...
  • 引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据...
  • 声明有两种,一种是定义性声明简称定义,还有一种就是声明,在使用变量之前一定要对其进行声明(专门为编译器而做),为了声明变量,首先要指定变量的声明说明符和声明符,有时也会赋予初始化值,然后再加上分号。...
  • linux下面select返回115错误

    千次阅读 2016-06-13 19:37:33
    或者你会发现,你在编写程序时,不注意,或者一个很不起眼的写法,可它会给你带来很无奈的错误,让你很久才会发现,原来这个问题是这么回事。 1、常见的写法问题 1 2 3 4 5 6 7...
  • 初学者在Linux中进行C++编程时会遇到“‘cout’...下面来详细分析一下错误原因,通过分析来得到问题解决办法。 首先我们以一段代码为例。 如果我们将这个代码保存为hello.cpp 在终端输入g++ hello.cpp -o hello
  • 往期目录 第一课, 体验typescript 第二课, 基础类型和入门高级类型 第三课, 泛型 第四课, 解读高级类型 第五课, 命名空间(namespace)是什么 ..., 受个人时间限制, 暂把"声明"部分的内容分为"全局声明篇"和"模块声...
  • 初学者在Linux中进行C++编程时会遇到“‘cout’在此作用...下面来详细分析一下错误原因,通过分析来得到问题解决办法。 首先我们以一段代码为例。 如果我们将这个代码保存为hello.cpp 在终端输入g++ hello.cp
  • C++类里面vector声明错误:“expected parameter declarator

    千次阅读 多人点赞 2020-08-04 20:58:35
    发现这样的声明: struct TrieNode{ char data; bool isEnd = false; vector<TrieNode*> children(26);//想申请大小为26的数组 TrieNode(char data) : data(data){}; }; 会报错:expected parameter ...
  • 由于客户的需求,撬开棺材板把IE6又搬出来鞭尸,发现原来的一段js程序报非法访问错误。原来是由于里面一个数组的声明不严谨: var v = [ 'aaa',]; 注意数组声明里最后的一个逗号! 这个数组v在现在的浏览器(IE8/...
  • C++ 类声明 类前置声明范例

    千次阅读 2019-07-19 18:47:40
    在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的...
  • 题目:以下声明合法的是()

    千次阅读 2020-05-18 19:13:13
    题目:以下声明合法的是() A、default String s; B 、public final static native int w(); C、abstract double d; D、abstract final double hyperbolicCosinc(); 结果:B 解释: A:属性的可访问控制符可以是...
  • 命令式和声明式,哪个才是你的菜

    千次阅读 2017-06-01 16:13:57
    今天的主题是讨论一下“命令式”思想和“声明式”思想在分布式系统和微服务架构运维中的应用。主要大纲:1. “命令式”和“声明式”的概念 2. 命令式思想在分布式系统和微服务架构中遇到的困境 3. 以Kubernetes的...
  • 错误: 从内部类中访问本 地变量vvv;... 从github 下载了源码, 进行编译, 出现了下面错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :buildSrc:clean :buildSrc:compileJava E:\do...
  • 理解C语言中指针的声明以及复杂声明的语法

    千次阅读 多人点赞 2016-04-01 23:51:29
    昨天刚把《C程序设计语言》中“指针与数组”章节读完,终于把心中的疑惑彻底解开了。现在记录下我对指针声明的理解,顺便说下如何在C语言中创建复杂声明以及读懂复杂声明
  • 深入理解变量声明提升和函数声明提升

    万次阅读 多人点赞 2016-03-05 20:51:02
    变量声明提升 1、变量定义 可以使用var定义变量,变量如果没有赋值,那变量的初始值为undefined。 2、变量作用域 变量作用域指变量起作用的范围。变量分为全局变量和局部变量。全局变量在全局都拥有定义;而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 586,828
精华内容 234,731
关键字:

下面哪些声明是错误的