精华内容
下载资源
问答
  • break 和continue 区别和用法

    万次阅读 多人点赞 2019-05-10 15:32:19
    break 和continue 区别和用法的视频教程:https://ke.qq.com/course/149432?tuin=57912c43 有技术问题或者面试方面想学习交流的加我个人微信renlliang2013,本人建了一个微信答疑群,有学习疑问的同学加我拉你进群...

    break 和continue 区别和用法的视频教程:https://ke.qq.com/course/149432?tuin=57912c43

    有技术问题或者面试方面想学习交流的加我个人微信renlliang2013,本人建了一个微信答疑群,有学习疑问的同学加我拉你进群。

    想搞清楚break 和continue的用法以及区别必须要记住的两件两句话! 
    我们大家先记住一句话 :break 再循环中的作用是 跳出一个循环或者结束一个循环 
    接下来我们来写一个题目来实现一下这个break的功能。 
    题目:从100打印到0 是7的倍数并且求出最大值是多少

    输出的答案是98 
    在这里我们用了break 那我们看一下不用break是什么样子的

    输出的答案是98,91,84,77,70,63,56,49,42,35,28,21,14,7,0, 
    我们直观的看到了 有break和没有break的区别。 
    所以说“break再循环中的作用是 跳出一个循环或者结束一个循环

    那好下面我们再看一下continue再循环中起的是什么做作用

    还是还请大家记住一句话: 看到continue立即结束本次循环,继续执行下一次循环 
    我们在一起写一个题目 题目如下: 
    小明在班级的时候 和喜欢的人打招呼 和不喜欢的人不打招呼。他们班级一共有十个人。 
    小明分别讨厌 3 5 7这三个人 请用循环写出小明只和喜欢的人打招呼和不喜欢的人不打招呼。

    输出的结果是:1早上好,2早上好,4早上好,6早上好,8早上好,9早上好。 
    下面我们不用continue来写一次看看

    输出的结果是:1早上好,2早上好,3早上好,4早上好,5早上好,6早上好,7早上好,8早上好,9早上好。 
    9早上好, 
    上面两个例子我们不难看出来,continue 题目中所起到的作用 就是上面的那一句话: 
    看到continue时立即结束本次循环,继续执行下一次循环。

    总结

    break 和continue 他们的区别就是 , break是直接结束循环, 而continue呢,他不是直接结束本次循环而是跳过循环,继续执行下一次的循环。 
    所以说想在某一个时刻停止一个循环的时候直接用break 简单粗暴不解释! 
    但是你要想不想停止正循环想让循环再某一时刻不执行某个阶段然后还能继续执行剩下的程序那自然要用到continue了!

     

    break 和continue 区别和用法的视频教程:https://ke.qq.com/course/149432?tuin=57912c43

    有技术问题或者面试方面想学习交流的加我个人微信renlliang2013,本人建了一个微信答疑群,有学习疑问的同学加我拉你进群。


    --------------------- 

    转自原文:https://blog.csdn.net/qq_36390044/article/details/78680383 

    展开全文
  • qsortsort函数用法区别

    千次阅读 2015-03-31 14:04:43
    只要注明 使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针尾指针;  默认sort排序后是升序,如果想让降序排列,可以使用自己编的cmp函数 bool compare(int a,int b) {  return a>b; //...

    区别

    sort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数,

    只要注明  使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针和尾指针; 

    默认sort排序后是升序,如果想让他降序排列,可以使用自己编的cmp函数

    bool compare(int a,int b)

    {

      return a>b; //降序排列,如果改为return a<b,则为升序

    }

    sort(*a,*b,cmp);

    sort 使用时得注明:using namespace std;   或直接打 std::sort()  还得加上  #include <algorithm> 

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
         int a[20];
         for(int i=0;i<20;++i)
             cin>>a[i];
        sort(a,a+20);          //范围,很明显这里是a+20 注意,这是必要的,如果是a+19
        for(i=0;i<20;i++)        //最后一个值a[19]就不会参与排序。
           cout<<a[i]<<endl;
          return 0;
    }

    std::sort是一个改进版的qsort. std::sort函数优于qsort的一些特点:对大数组采取9项取样,更完全的三路划分算法,更细致的对不同数组大小采用不同方法排序。

    qsort   功 能: 使用快速排序例程进行排序   

    用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));   

    各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针

    用于确定排序的顺序 排序方法有很多种, 选择排序,冒泡排序,归并排序,快速排序等。

     看名字都知道快速排序 是目前公认的一种比较好的排序算法(特殊场合例外),比选择排序,冒泡排序都要快。

    这是因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort。

    qsort 要求提供一个 比较函数,是为了做到通用性更好一点。比如你不仅仅的是要排序一个数字而已,可能你要用来排序几个数字 ,

    a<本文中排序都是采用的从小到大排序>

    一、对int类型数组排序

    int num[100];

    Sample: int cmp ( const void *a , const void *b )

    { return *(int *)a - *(int *)b; }

    qsort(num,100,sizeof(num[0]),cmp);

    二、对char类型数组排序(同int类型)

    char word[100];

    Sample: int cmp( const void *a , const void *b )

    { return *(char *)a - *(int *)b; }

    qsort(word,100,sizeof(word[0]),cmp);

    三、对double类型数组排序(特别要注意)

    double in[100];

    int cmp( const void *a , const void *b )

    { return *(double *)a > *(double *)b ? 1 : -1; }

    qsort(in,100,sizeof(in[0]),cmp);

    四、对结构体一级排序

    struct In { double data; int other; }s[100]

    //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,

    //参考上面的例子写

    int cmp( const void *a ,const void *b)

    { return (*(In *)a).data > (*(In *)b).data ? 1 : -1; }

    qsort(s,100,sizeof(s[0]),cmp);

    五、对结构体二级排序

    struct In { int x; int y; }s[100];

    //按照x从小到大排序,当x相等时按照y从大到小排序

    int cmp( const void *a , const void *b )

    {

    struct In *c = (In *)a; struct In *d = (In *)b;

    if(c->x != d->x)

              return c->x - d->x;

    else

              return d->y - c->y;

    }

    qsort(s,100,sizeof(s[0]),cmp);

    六、对字符串进行排序

    struct In { int data; char str[100]; }s[100];

    //按照结构体中字符串str的字典顺序排序

    int cmp ( const void *a , const void *b )

    {

    return strcmp( (*(In *)a)->str , (*(In *)b)->str );

    }

    qsort(s,100,sizeof(s[0]),cmp);

    七、计算几何中求凸包的cmp

    int cmp(const void *a,const void *b)

    //重点cmp函数,把除了1点外的所有点,旋转角度排序

    {

    struct point *c=(point *)a;

    struct point *d=(point *)b;

    if( calc(*c,*d,p[1]) < 0)

             return 1;

    else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y))

    //如果在一条直线上,则把远的放在前面

            return 1;

    else return -1;

    }



    展开全文
  • self下划线的用法区别

    千次阅读 2016-05-10 00:26:14
    self下划线的用法区别 2014-11-20 14:44:33 标签:self下划线的用法区别 首先通过self.xxx 通过访问的方法的引用:包含了setget方法。而通过下划线是获取自己的实例变量,不包含setget...
    self和下划线的用法区别
    2014-11-20 14:44:33

    1. 首先通过self.xxx 通过访问的方法的引用:包含了set和get方法。而通过下划线是获取自己的实例变量,不包含set和get的方法。

    2. self.xxx是对属性的访问;而_xxx是对局部变量的访问。所有被声明为属性的成员,再ios5之前需要使用编译指令@synthesize 来告诉编译器帮助生成属性的getter和setter方法,之后这个指令可以不用认为的指定了,默认情况下编译器会帮助我们生成。编译器在生成getter,setter方法时是有优先级的,他首先查找当前的类中用户是否定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。也就是说你在使用self.xxx时是调用一个getter方法。会使引用计数加一,而_xxx不会使用引用技术加一的。

    所有使用self.xxx是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在BLock中造成循环引用。同时,使用 _是获取不到父类的属性,因为它只是对局部变量的访问。


    最后总结:self方法实际上是用了get和set方法间接调用,下划线方法是直接对变量操作。

    在最新的xcode中,已经不需要我们自己去写 set,get 方法,,系统已经自动帮我们生成set,get方法。
    同时我们发现在我们访问我们声明的变量时,会有self. 和 以"_"开头的访问方式,那么这两种方式到底有什么样的区别呢?

    我们来一起看一下:

    
    @property (retain, nonatomic) NSMutableArray *nameArray;self.nameArray是访问属性的,而_nameArray是访问实例变量的.
    
    
    

    属性是实例变量加上GET,SET方法的一个整合体,他主要是承担一个外部访问的一个接口!

    实例变量只能在本类中才可以访问,外部不可以访问!

    总的原则:

    在类内部访问变量的时候用“_”;

    在类外部也就是其他类里访问这个类的变量时用“.” 语法;

    共同点self.shuxing  这样访问属性比如self.array.count 会触发其set方法。
    而_shuxing 这样的访问方法比如_array.count 则不会。

    注意事项:

    手动管理内存的情况下:

    使用“.”语法来初始化变量的时候,会产生内存泄漏的问题:

    
    self.nameArray = [NSMutaleArray alloc] init];
    
    
    

    上述代码,造成的问题是,在self.nameArray的时候相当于调用了set方法,引用计数+1,后面alloc的时候,引用计数再次+1。
    在我们最后dealloc中release的时候,引用计数只减了一次,并没有完成全部释放,这样就造成了内存泄漏的问题。

    解决方法:就是用“_”来初始化以及访问变量,这样就不会产生内存问题,虽不是什么高明的办法,但的确有效。

    
    _nameArray = [NSMutaleArray alloc] init];
    
    
    

    上述便是“.”和“_”在使用的时候的简单区别。


    如果是在ARC(自动管理内存)的情况下虽然不存在上述问题,但从编码规范来考虑,还是注意点儿的好。

    总结:1,self.是对属性的访问,使用它的时候编译器会判断_是否为空,为空的话自动实例化。会自动访问get和set方法

             2,_是对实例变量的访问,我们没有实例化它,不能使用

             3,对类里局部变量访问使用_,外部变量则用self.

             4,在getter方法中,不要再使用self。否则会重复调用getter方法,造成死循环

    iOS中self.和下划线的区别

        1.首先通过self.xxx 通过访问的方法的引用:包含了set和get方法。而通过下划线是获取自己的实例变量,不包含set和get的方法。

        2.self.xxx是对属性的访问;而_xxx是对局部变量的访问。所有被声明为属性的成员,再ios5之前需要使用编译指令@synthesize 来告诉编译器帮助生成属性的getter和setter方法,之后这个指令可以不用认为的指定了,默认情况下编译器会帮助我们生成。编译器在生成getter,setter方法时是有优先级的,他首先查找当前的类中用户是否定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。也就是说你在使用self.xxx时是调用一个getter方法。会使引用计数加一,而_xxx不会使用引用技术加一的。

        所有使用self.xxx是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在BLock中造成循环引用。同时,使用 _是获取不到父类的属性,因为它只是对局部变量的访问。


    最后总结:self方法实际上是用了get和set方法间接调用,下划线方法是直接对变量操作。

    ios。 OC中类得局部变量、属性变量、成员变量分别怎么使用、之间有什么区别和联系求详解?
    例子:
    头文件:
    @interface ViewController : UIViewController
    {
        //成员变量
        NSArray *array1;
    }
    //属性变量
    @property (nonatomic,strong) NSArray *array2;
    @property (nonatomic,strong) NSArray *array3;
    @end


    源文件:
    - (void)viewDidLoad
    {
        [super viewDidLoad];
          _array3 =  [[NSArray alloc] initWithObjects:@"abcde", nil]; //实例变量(如果是在匿名分类中声明的属性,"_属性名也是实例变量)
        array1 = [[NSArray alloc] initWithObjects:@"abcde", nil];
        array2 = [[NSArray alloc] initWithObjects:@"123abc", nil];
        {
    //        局部变量
            NSArray *array1 = [[NSArray alloc] initWithObjects:@"12345", nil];
        }
        NSLog(@"\narray1 : %@\n array2 : %@",array1,array2);
    }
    展开全文
  • Synchronize Lock 的区别用法

    千次阅读 2015-08-03 21:18:23
    Synchronize Lock 的区别用法

    一、synchronized和lock的用法区别

     
    (1)synchronized(隐式锁):在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。
     
    (2)lock(显示锁):需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对 象才能保证锁的生效。且在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。
     

    二、synchronized和lock性能区别

     
    synchronized是托管给JVM执行的,而lock是java写的控制锁的代码。在Java1.5中,synchronize是性能低效的。因为 这是一个重量级操作,需要调用操作接口,导致有可能加锁消耗的系统时间比加锁以外的操作还多。相比之下使用Java提供的Lock对象,性能更高一些。但 是到了Java1.6,发生了变化。synchronize在语义上很清晰,可以进行很多优化,有适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致 在Java1.6上synchronize的性能并不比Lock差。
     

    三、synchronized和lock机制区别


    (1)synchronized原始采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着其 他线程只能依靠阻塞来等待线程释放锁。
    (2)Lock用的是乐观锁方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就 是CAS操作(Compare and Swap)。
     
    展开全文
  • ViewBagViewData的用法和区别

    千次阅读 2017-04-19 09:18:37
    ViewData ViewData是一个特殊的字典类的名称,我们可以用标准的字典语法进行...ViewBag 是asp.net mvc3中对ViewData的一种动态封装,用法更方便。的赋值方法是: ViewBag.Name = "Jack"; 也就是说ViewData["Name"]
  • displayvisibility的用法和区别

    千次阅读 2018-12-04 15:17:28
    visibility属性所控制的元素虽然不在浏览器里面显示出来,但在浏览区里是存在的,只是不显示而已。而display属性设置为none,这个元素就变成了一个不显示的元素。   一、Display的属性值 blo...
  • break continue 区别以及用法

    万次阅读 多人点赞 2017-11-30 20:13:13
    今天我们来介绍一下循环里的break continue的用法以及区别我们大家先记住一句话 :break 再循环中的作用是 跳出一个循环或者结束一个循环 接下来我们来写一个题目来实现一下这个break的功能。 题目:从100打印到...
  • both andboth of 得用法 和区别

    千次阅读 2020-07-13 20:04:16
    both andboth of都有"两个都"的意思,作bai主语时谓语动词du都用复数,但它们的用法有点zhi不同。dao 1、both …and… 连接两个并列成分。 如: 1). He can speak both English and Chinese . 会说英语汉语。 ...
  • Collection,List,SetMap用法和区别

    千次阅读 2018-01-02 13:40:38
    Collection,List,SetMap用法和区别原创 2009年12月22日 17:05:00标签:list /hashmap /vector /iterator /object /equals10407Collection , List , Set  Map 用法和区别作者: zccst Java ...
  • Position属性四个取值用法和区别

    万次阅读 多人点赞 2018-08-11 18:42:17
    Position属性四个取值用法和区别 在初学css的过程中常常会碰到设置定位的问题,大多数初学者都是大概明白,如果不好好弄清楚将会给以后的开发带来困难,经过本小菜对其他文章的浏览,自我总结如下: 目录 ...
  • 乐观锁 悲观锁 的用法和区别

    千次阅读 2018-01-11 22:12:07
    不会加锁, 但是更新的时候会进行判断, 判断跟原始的数据一不一样,返回受影响行数, 如果不一样,会返回受影响的行数为0, 如果一样,会返回受影响的具体数量, 我们可以通过返回值,来采取对应的措施,比如回滚还是从新...
  • Pytorch中nn.ModuleListnn.Sequential的用法和区别

    千次阅读 多人点赞 2019-05-08 16:12:55
    最近在定义一个多任务网络的时候对nn.ModuleListnn.Sequential的用法产生了疑惑,这里让我们一起来探究一下二者的用法和区别。 nn.ModuleList的作用 先来探究一下nn.ModuleList的作用,定义一个简单的只含有全...
  • C#中File和FileInfo的区别和用法

    千次阅读 2019-04-10 14:15:26
    FileFileInfo两个功能基本相同,他们都是基于System.IO命名空间的文件操作类。 File:是一个静态类,通过类名直接调用,不需要实例化。 File类对应整个文件系统进行操作,如果只是对文件进行少量的操作,如判断...
  • c# isas的区别用法

    千次阅读 2018-08-09 20:25:09
    一、类型转换 任何类型都可以转为其基类型,用隐式转换完成。 任何类型转换成器派生类时,必须显示转换。如(类型)对象名。... 值类型引用类型的转换称为装箱(boxing)或拆箱(unboxing); 二、is...
  • 本文实例讲述了JavaScript中calleecaller的区别用法。分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:argumentsthis。其中arguments是一个类似数组的对象,包含着传入函数的所有...
  • 多态重载的区别用法

    千次阅读 2020-07-21 08:57:23
    方法的重载返回值类型无关,只需要满足两个条件: 1)方法名相同 2)参数个数或参数类型不同 public class E12 { public int add(int x,int y){ return x+y; } public int add(int x,int y,int z){//参数
  • final、finally的区别和用法

    千次阅读 2019-05-07 14:05:52
    开发工具与关键技术:MyEclipse 10、...数据包括成员变量局部变量,该变量只能被赋值一次且它的值是无法被改变。对于成员变量来讲,我们不须在声明时、构造方法或者初始化块中对赋值。 public class FinaMem...
  • Promise的四种用法和区别

    千次阅读 2019-04-18 09:25:20
    @Promise测试 Promise区别 四种Promise区别 话不多说,上图 地狱函数: ajax({ url: url1, success: function(data) { ajax({ url: url2, data: data, success: funct...
  • します、する。这种动词原形就是表示一般规律,日常常规。或者不久将来要做的。 しています。表示持续的一种状态。... 总是在这里散步。(规律) (今)散歩しています。 我现在正在散步。(进行时)...
  • forforearch的区别用法

    千次阅读 2013-08-23 00:36:10
    forforeach的用法区别for可以不逐个遍历,比如每隔一个遍历一个,也可以从前向后遍历,从后向前,但是foreach不能从后向前遍历,只能从前向后,并且foreach只能逐个遍历。在foreach中不能向迭代变量赋值。 说明:...
  • 本地存储cookie的区别用法

    千次阅读 2018-11-13 15:20:11
    localStorage  localStorage所存储的信息是永久保存的,除非手动去remove;存放的数据大小一般为5Mb sessionStorage ...localStorage sessionStorage的用法是一致的 cookie  cookie ...
  • call、applybind方法的用法以及区别   call、apply、bind的作用是改变函数运行时this的指向,所以先说清楚this 1、方法调用模式:   当一个函数被保存为对象的一个方法时,如果调用表达式包含一个提取属性的...
  • Linux vi/vim 的区别和用法

    万次阅读 多人点赞 2018-07-19 11:48:42
    底线命令模式(Last line mode) 。 这三种模式的作用分别是: 命令模式: 用户刚刚启动 vi/vim,便进入了命令模式。 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会...
  • 三.cyclicBarrierCountDownLatch的区别 1、CountDownLatch简单的说就是一个线程等待,直到所等待的其他线程都执行完成并且调用countDown()方法发出通知后,当前线程才可以继续执行。 2、cyclicBarrier...
  • PHP中MySQL、MySQLiPDO的用法和区别

    万次阅读 2016-03-07 17:24:22
    并且同时提供了 Object oriented style (下面这段 PHP-MySQLi 范例的写法) Procedural style ? 1 2 3 4 5 6 7 8 9 10 11 ...
  • SQL关于INEXISTS的用法和区别的比较

    千次阅读 2015-08-29 23:41:45
    1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。 2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引....in 是把外表内表作ha
  • 话不多说,因为笔者用反而报NPE了。。。。 通常来说,我使用Optional是用来设置默认值的,杜绝null的出现。但是最近使用Optional.of报空指针了。。 那么我们先看看源码: /** * Returns an {@code ...
  • 简单易懂的解释c#的abstractvirtual的用法和区别

    万次阅读 多人点赞 2016-05-12 22:04:55
    先来看abstract方法,顾名思义,abstract方法就是抽象方法...但是反过来,抽象类里面不一定要有抽象方法,比如我写了一个非抽象类,但是这个类我不想让人直接实例化,而只让人继承,我就可以把变成一个抽象类,虽然
  • 在讨论hibernate中save,update,saveOrUpdate的用法和区别之前我们先要了解PO的3种状态: 1、未被持久化的VO此时就是一个内存对象VO,由JVM管理生命周期 2、已被持久化的PO,并且在Session生命周期内此时映射数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,435
精华内容 51,774
关键字:

他和它的用法区别