精华内容
下载资源
问答
  • Boolean初始值什么

    万次阅读 2018-09-22 17:44:33
    } //注意这里必须放在外边(类加载 默认给赋值, //如果放在方法内部直接报错 Variable 'min' might not been initialized 表示没有初始化) static boolean min; static Boolean max; public static void ...
    public class AboutBoolean {
      public static void main(String[] args) {
        testBoolean();
      }
    
      //注意这里必须放在外边(类加载 默认给赋值,
      //如果放在方法内部直接报错 Variable 'min' might not been initialized 表示没有初始化)
      static boolean min;
      static Boolean max;
      public static void testBoolean(){
        //min的默认值是:  false 因为min是false
        if(min){
          System.out.println("min的默认值是:  "+min);
        }else {
          System.out.println("min的默认值是:  "+min);
        }
    
        System.out.println("-------------");
    
        //Exception in thread "main" java.lang.NullPointerException 因为max是null
        if(max){
          System.out.println("max的默认值是:  "+max);
        }else {
          System.out.println("max的默认值是:  "+max);
        }
      }
    }

    总结:如果是全局变量,包装类Boolean是会被默认赋值为null,而基础类型boolean会被默认赋值为false的。赋值过程应该是在 类加载的时候赋值的。

    如果是局部变量,当你不赋值去使用的时候,编译器会直接报错,所以局部变量肯定是没有默认值的。

     

    展开全文
  • 非常量引用的初始值必须是左值

    千次阅读 2017-02-20 17:05:48
    上述代码错误“非常量引用的初始值必须是左值”因为 int 和double 类型不一致,首先会执行隐式类型转换,产生一个临时变量。const double tmp=(double)n这样传给函数的就是一个常量。用一个常量(右值)对非常量类型...

    问题

    void increment(double& x)
    {
        x+=1.0;
    }
    int n=5;
    increment(n);
    

    上述代码错误**“非常量引用的初始值必须是左值”**

    因为 int 和double 类型不一致,首先会执行隐式类型转换,产生一个临时变量。

    const double tmp=(double)n
    

    这样传给函数的就是一个常量。用一个常量(右值)对非常量类型引用赋值,会出错。

    修改1

    void increment(double& x)
    {
        x+=1.0;
    }
    double n=5;//改为double型
    increment(n);
    

    修改2

    void increment(double const & x)
    {
        //x不能修改
    }
    int n=5;
    increment(n);
    

    事实上编译器拒绝对非常量引用执行隐式转换(因为隐式转换的中间临时变量是一个常量,编译时无法通过)

    :引用初始化后,不可以修改。指的不是不能修改它引用的变量的值,而是不能让它在引用其他变量。

    int a=0;
    int b=1;
    int &c=a;
    &c=b;//错误
    
    展开全文
  • Java 变量 的 初始值

    千次阅读 2012-12-19 15:40:10
    下面讨论下Java中的变量初始值问题: 1.类变量(包括静态(static)和非静态的情况) 1.原始类型(Primitive Type) byte,short,int,long的初始值为0 double,float的初始值为0.0 boolean的初始值为false char的初始...


    下面讨论下Java中的变量初始值问题:

    1.类变量(包括静态(static)和非静态的情况)

    1.原始类型(Primitive Type)

    byte,short,int,long的初始值为0

    double,float的初始值为0.0

    boolean的初始值为false

    char的初始值为空格(ASCII值为0)

    2.引用类型(Reference Type)

    初始值为null(如果没有赋值)


    2.局部变量(Local Variable)

    局部变量指的是方法内声明的变量,在使用变量前,必须要进行初始化。因此初始值为用户赋予的值。


    3.静态变量(static Variable)

    在方法里不允许用static修饰变量(其实最多只能用final来修饰方法里的局部变量)。因此不可能存在静态局部变量的说法。

    展开全文
  • 非常量引用的初始值必须为左值,常量引用的初始值可以为左值、右值

    首先,先看下面一个例子:

    eg.1

    #include<iostream>
    usingnamespace std;


    int main(){
    int i =2;
    double &=i;
    return 0;
    }



    gcc error: invalid initialization of reference of type 'double&' from expression of type 'int'
    如果改成 const double &=i;没有问题。
    难道这里的i不是左值?

    程序改成 :

    eg.2

    int main(){
    double =2;
    double &=i;
    return 0;
    }


    没有错误
    难道这里的i又是左值啦?

     

    其实:

    const double &r = i; 
    由于类型不匹配,实际相当于:
    const double inner_tmp = (double)i;  //这里就产生了一个临时变量
    const double &r = inner_tmp;
    临时的中间变量都是const,所有没有const的引用会失败

     

    左值与右值的区分

     

    首先理解什么是右值引用下面是百度百科给出的解释):

           右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一,这点从该特性的提案在C++ - State of the Evolution列表上高居榜首也可以看得出来。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升…   在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。这样函数便无法区分传给const &的是真实的右值还是常规变量。而且,由于类型为const &,函数也无法改变所传对象的值。C++0x将增加一种名为右值引用的新的引用类型,记作typename &&。这种类型可以被接受为非const值,从而允许改变其值。

     

     区分左值与右值:

           C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。
           对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。

           左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。下面给出一些例子来进行说明。 

    int a = 10;
    int b = 20;
    int* pFlag = &a;
    vector<int> vctTemp;
    vctTemp.push_back(1);
    string str1 = "hello ";
    string str2 = "world";
    const int &m = 1;

    请问,a,b, a+b, a++, ++a, pFlag, *pFlag, vctTemp[0], 100, string("hello"), str1, str1+str2, m分别是左值还是右值?


     

    什么是左值引用:
           区分清楚了左值与右值,我们再来看看左值引用。左值引用根据其修饰符的不同,可以分为非常量左值引用(eg.1 double &=i;)常量左值引用(eg.1 const double &=i;)
           非常量左值引用只能绑定到非常量左值,不能绑定到常量左值、非常量右值和常量右值。如果允许绑定到常量左值和常量右值,则非常量左值引用可以用于修改常量左值和常量右值,这明显违反了其常量的含义(eg.1中就是出现了非常量左值引用绑定到常量右值的情况)。如果允许绑定到非常量右值,则会导致非常危险的情况出现,因为非常量右值是一个临时对象,非常量左值引用可能会使用一个已经被销毁了的临时对象。
           常量左值引用可以绑定到所有类型的值,包括非常量左值、常量左值、非常量右值和常量右值。

     

    为什么要区分非常量右值引用:

           可以看出,使用左值引用时,我们无法区分出绑定的是否是非常量右值的情况。那么,为什么要对非常量右值进行区分呢,区分出来了又有什么好处呢?这就牵涉到C++中一个著名的性能问题——拷贝临时对象。考虑下面的代码: 

    vector<int> GetAllScores()
    {
    vector<int> vctTemp;
    vctTemp.push_back(90);
    vctTemp.push_back(95);
    returnvctTemp;
    }

           当使用vector<int> vctScore = GetAllScores()进行初始化时,实际上调用了三次构造函数。尽管有些编译器可以采用RVO(Return Value Optimization)来进行优化,但优化工作只在某些特定条件下才能进行。可以看到,上面很普通的一个函数调用,由于存在临时对象的拷贝,导致了额外的两次拷贝构造函数和析构函数的开销。当然,我们也可以修改函数的形式为void GetAllScores(vector<int> &vctScore),但这并不一定就是我们需要的形式。另外,考虑下面字符串的连接操作:

    strings1("hello");
    strings = s1 + "a""b""c""d""e";

           在对s进行初始化时,会产生大量的临时对象,并涉及到大量字符串的拷贝操作,这显然会影响程序的效率和性能。怎么解决这个问题呢?如果我们能确定某个值是一个非常量右值(或者是一个以后不会再使用的左值),则我们在进行临时对象的拷贝时,可以不用拷贝实际的数据,而只是“窃取”指向实际数据的指针(类似于STL中的auto_ptr,会转移所有权)。C++ 11中引入的右值引用正好可用于标识一个非常量右值。C++ 11中用&表示左值引用,用&&表示右值引用,如:

    int&&a = 10

           右值引用根据其修饰符的不同,也可以分为非常量右值引用常量右值引用
           非常量右值引用只能绑定到非常量右值,不能绑定到非常量左值、常量左值和常量右值(VS2010 beta版中可以绑定到非常量左值和常量左值,但正式版中为了安全起见,已不允许)。如果允许绑定到非常量左值,则可能会错误地窃取一个持久对象的数据,而这是非常危险的;如果允许绑定到常量左值和常量右值,则非常量右值引用可以用于修改常量左值和常量右值,这明显违反了其常量的含义。
           常量右值引用可以绑定到非常量右值和常量右值,不能绑定到非常量左值和常量左值(理由同上)。可以看出,使用左值引用时,我们无法区分出绑定的是否是非常

    展开全文
  • 首先,我们要知道,HashMap 在储存数据结构的时候, 扩...4) 、负载因子0.75(听说这个值是经过大量实践算出来了的,这个值设定最合理),初始值16 的是数组的长度 16(1&lt;&lt;4 是2 的4次方 ,这样写计算...
  • "非常量引用的初始值必须为左值

    万次阅读 2017-06-07 11:52:55
    非常量引用的初始值必须为左值
  • 启动调试, 类型初始值设置引发异常

    千次阅读 2018-01-30 10:17:52
    运行后报错: "类型初始值设置引发异常" 感觉应该是新建项目Form1的问题, 因为该三层架构在另一个Winform程序中运行正常. 在另一个BS程序中也运行正常. 于是开始了修改, 具体过程如下(基本是自己的脑残...
  • 1、如何查看auto_increment的初始值和步长 打开黑窗口,登录管理员账号和密码后,执行以下命令: show variables like 'auto_inc%'; -- 查看当前数据库的自增长设置 执行结果如下: 即 auto_increment的...
  • 单片机的定时初始值的设定

    千次阅读 2017-09-26 22:18:50
    C51 定时器 TL0=  C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?...机器周期=12/n(n晶振频率),假设你要定时的时间为M 那么定时的初值为: M/机器周期=初值; TH0=(65536-初值)/256; 
  •  初始值:变量声明后的值,可能零、空、其他等。  零值:基本类型0/0.0;对象创建/初始化后,值是“零”,但对象存在;  空值:对象不存在,没有创建(只对对象而言);它的值有可能是nil(可用作判断等使用)...
  • 本文根据参考资料整理出一套设计内嵌馈线式(Inset-Fed Patch Antenna)的公式,并用Octave描述出公式,只要输入必要的参数如板材厚度、介质常数、工作频率等即可生成了一个微带天线的初始值。然而这个初始值只作...
  • 原文地址:非常量引用的初始值必须为左值的问题作者:逆光Summer 首先,先看下面一个例子: eg.1 #includeiostream> usingnamespace std; int main(){ int i =2; double &r =i; return 0; ...
  • 对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一:  借鉴麒麟.NET的类型初始值设定项引发异常文章!!!写的很详细...
  • C++基础 内置类型和类类型的默认初始化和值初始化写在前面的话如果定义变量时候没有指定初值,则变量被默认初始化。 但是默认初始化还有另外一个含义,在定义内置类型时由于定义变量的位置不同,有可能会不发生初始...
  • 什么HashMap的初始容量是16

    千次阅读 2019-02-18 16:40:43
    到底什么是hash呢?hash碰撞?为什么HashMap的初始容量是16? https://blog.csdn.net/qq_35583089/article/details/80048285 一 ,到底什么是hash呢? 作者:知乎用户 链接:...
  • 08_Numpy初始化生成相同元素值的ndarray...numpy.zeros(): 初始值为0 numpy.ones(): 初始值为1 numpy.full(): 任意值的初始化 如何生成与现有数组相同(的是形状shape,类型dtype相同)的数组。 numpy.zeros_lik...
  • 利用针对数组进行初始

    千次阅读 2018-05-28 15:50:17
    对一个数组进行初始化,使数组中的所有元素全部为0,这个操作是很简单的。最简便的方法就是在对数组进行定义时就对其初始化:#include &lt;stdio.h&gt; #define LEN 5 int main(){ int arr[LEN] = {0}; ...
  • 一 ,到底什么是hash呢? 作者:知乎用户 链接:https://www.zhihu.com/question/26762707/answer/40119521 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 hash(散列、杂凑)...
  • C++ 枚举类型初始化方式及

    千次阅读 2019-03-07 14:06:10
    枚举类型 枚举类型(enumeration)是C++...是将变量的一一列举出来,变量的只能在列举出来的的范围内。 创建枚举,需要使用关键字 enum。枚举类型的一般形式为: enum 枚举名{ 标识符[=整型常数], 标识符...
  • 什么静态成员不能在类内初始化 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。 class A { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外...
  • 权重初始

    千次阅读 2018-01-06 21:12:12
    权重初始的是在神经网络开始训练之前预先设定的过程,那么问题来了 为什么权重需要初始化呢? 如果权重不初始化,全部为0,那么每个神经节点的均相同,因此在反向传播时,每个权重的梯度为输入该节点的...
  • KMeans算法是最常用的聚类算法,主要思想是:在给定K和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的...
  • 字符数组的初始化与赋值

    万次阅读 2015-09-09 17:10:00
    字符数组的初始化方式变量的定义的是:指明变量所属类型、变量名称、分配空间以及初始化其初始值的过程。可以看出,变量的初始化是变量的定义的一部分。除了const变量需要显示的初始化以外,如果变量定义的时候,...
  • 链表初始化为什么要用双重指针

    千次阅读 2015-07-23 20:49:54
    初始化中 为什么要双重指针? 解答 意思是:你想通过函数来改变L的,但是L是指针类型,所以你要改变它的就要传L的地址进去,因为双重指针的意思就是指向指针的指针,就是指针的地址,那么**L就是指向指针L的...
  • c中为什么整型数组自动初始化不是0

    千次阅读 2018-01-24 19:23:15
    值初始化是内置类型在函数体以外定义,而初始化为0;其他的则采用默认初始化,取决于编译器赋给它一个不确定的。 因此如果整型数组定义在函数体内(main函数也在此列),则采用默认初始化,不能确定。 ps:...
  • java中的自动拆箱、装箱是指什么

    千次阅读 2017-05-08 10:51:52
    JAVA语言中有个名词叫自动拆箱、装箱,那这个自动拆箱、装箱到底是...int 是基本类型,而Integer是int的包装类,在JDK1.5之前,int类型的是不能直接赋给Integer类型的 的,也就是说 Integer integer = 5; 会报错
  • C++认识初始

    千次阅读 2015-08-29 18:32:55
    初始化是程序设计中一项重要的操作,又是一项容易被误解和忽略的操作。使用未初始化的变量(或内存区域)是程序产生bug的重要原因之一。...1.什么是初始化在给初始化下定义前。先弄清楚两个概念。申明与定义。
  •  KMeans算法是最常用的聚类算法,主要思想是:在给定K和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇...
  • TCP三次握手机制中的seq和ack的到底是什么

    千次阅读 多人点赞 2018-04-12 17:53:40
    seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,是等待接收的数据包的序列号。在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行...
  •  KMeans算法是最常用的聚类算法,主要思想是:在给定K和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 673,997
精华内容 269,598
关键字:

初始值指的是什么