精华内容
下载资源
问答
  • JAVA静态代码块作用

    千次阅读 2018-03-29 17:09:57
    一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动...
    一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
    比如main方法就必须是静态的 这是程序入口
    两者的区别就是:静态代码块是自动执行的;
    静态方法是被调用的时候才执行的.
    
    
    
    
    区别很简单:
    静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;
    非静态代码块,在创建对象的时候(即new一个对象的时候)执行,每次创建对象都会执行一次
    
    
    
    
    相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
        一般在代码块中对一些static变量进行赋值。
    不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
        静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
        一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
    例:
    //普通类
    public class PuTong {
    public PuTong(){
    System.out.print("默认构造方法!-->");
    }

    //非静态代码块
    {
    System.out.print("非静态代码块!-->");
    }

    //静态代码块
    static{
    System.out.print("静态代码块!-->");
    }

    public static void test(){
    {
    System.out.println("普通方法中的代码块!");
    }
    }
    }

    //测试类
    public class TestClass {

    /**
    * 区别两次new静态与非静态代码块执行情况
    */
    public static void main(String[] args) {
    PuTong c1 = new PuTong();
    c1.test();

    PuTong c2 = new PuTong();
    c2.test();
    }
    }

    /*
    运行输出结果是:
    静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块!
    非静态代码块!-->默认构造方法!-->普通方法中的代码块!
    */
    继承的时候:
    
    
    分析:对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。 
    而且子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。
    展开全文
  • synchronized代码块加锁

    千次阅读 2018-01-07 18:06:48
    使用synchronized代码块加锁,比较灵活 public class ObjectLock { public void method1(){ synchronized (this) { //对象锁 try { System.out.println("do method1..");

    使用synchronized代码块加锁,比较灵活

    
    
    public class ObjectLock {
    
        public void method1(){
            synchronized (this) {   //对象锁
                try {
                    System.out.println("do method1..");
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public void method2(){      //类锁
            synchronized (ObjectLock.class) {
                try {
                    System.out.println("do method2..");
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
        private Object lock = new Object();
        public void method3(){      //任何对象锁
            synchronized (lock) {
                try {
                    System.out.println("do method3..");
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
    
        public static void main(String[] args) {
    
            final ObjectLock objLock = new ObjectLock();
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    objLock.method1();
                }
            });
            Thread t2 = new Thread(new Runnable() {
                @Override
                public void run() {
                    objLock.method2();
                }
            });
            Thread t3 = new Thread(new Runnable() {
                @Override
                public void run() {
                    objLock.method3();
                }
            });
    
            t1.start();
            t2.start();
            t3.start();
    
    
        }
    
    }
    
    展开全文
  • 在Ruby中,{}或do…end之间的代码是一个代码块代码块只能出现在一个方法的后边,它紧接在方法最后一个参数的同一行上,由yield关键字调用。例如: [1,2,3,4,5].each { |i| puts i } [1,2,3,4,5].each do |i| puts...
  • sublime&&Hbuilder扩展常用代码块

    千次阅读 2016-08-11 18:46:36
    编辑器扩展代码块

    一、sublime

    1、tools-developer-New snippet获得如下模板:

    <snippet>
        <content><![CDATA[
    Hello, ${1:this} is a ${2:snippet}.
    ]]></content>
        <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
        <!-- <tabTrigger>hello</tabTrigger> -->
        <!-- Optional: Set a scope to limit where the snippet will trigger -->
        <!-- <scope>source.python</scope> -->
    </snippet>
    

    content—输出表达式内容
    tabTrigger—提示快捷键
    ${1:this}—默认补全代码之后的光标位置及默认内容this.
    ${2:snippet}—补全代码之后按tab键光标的第二默认位置及内容

    2、遵循如上规则对模板就行修改,例如:

    <snippet>
        <content><![CDATA[
    <a href="${1:this}" title="">${2:snippet}</a>
    ]]></content>
        <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
        <tabTrigger>a</tabTrigger>
        <!-- Optional: Set a scope to limit where the snippet will trigger -->
        <!-- <scope>source.python</scope> -->
    </snippet>

    3、将文件以 sublime-snippet 为后缀保存在Sublime Text 3\Packages\User默认目录下,就完成了对以a作为快捷键的代码块的创建保存。任意输入a+tab就能方便的调用保存好的代码块

    <a href="this" title="">snippet</a>
    

    二、Hbuilder

    工具—扩展代码块–自定义html代码块
    进入代码块模板之后按提示添加自定义代码块

    #可复制一段命令,在下面开始制作新命令
       snippet 'img_a_src' do |cmd|  #div_class是显示名称,代码助手提示列表显示时可见
        cmd.trigger = 'img_a_src'        #divc是激活字符,即按下divc后会触发该代码块
        cmd.expansion = "<img src=\"$1\" alt=\"\" title=\"\" />$0"                         #expansion是代码块的输出内容,其中$0$1是光标的停留和切换位置。$1是第一个停留光标,$0是最后回车时停留的光标。
                                                              #如果输出涉及到换行和tab,也需严格在这里使用换行和tab。
                                                              #输出双引号在前面加\来转义,输出$使用\$(单引号中)或\\$(双引号中)转义
        cmd.needApplyReContentAssist = true  #这句话的意思是输出后同时激活代码助手,即在$1的位置直接拉出样式列表
      end #div_class代码块结束
    
      snippet 'ng-pluralize' do |cmd|
        cmd.trigger = 'ngp'
        cmd.expansion = "<ng-pluralize>$1</ng-pluralize>"
      end

    保存–完成!!

    展开全文
  • 往往需要输入大量重复的代码,比如协议方法、初始化函数、GCD代码、函数注释说明等,如果每个重复出现的函数都需要重写一遍往往是比较耗费时间的,事实上所有的编译器在输入重复代码时,都有可以预设代码块的设置,...

    在iOS开发中,往往需要输入大量重复的代码,比如协议方法、初始化函数、GCD代码、函数注释说明等,如果每个重复出现的函数都需要重写一遍往往是比较耗费时间的,事实上所有的编译器在输入重复代码时,都有可以预设代码块的设置,Xcode在使用中尤其方便。

    选择Xcode右上角最右面的图标打开右侧视图,在最下方会有一个,表示代码块,很多系统预设的代码块都在其中,比如默认的初始化方法,switch-case、for-in、dowhile等。当我们在Xcode中调用的时候,实际上是直接替换的代码块中的代码,这样在开发时会节省很多时间,同时避免一些不必要的错误。

    同样的,Xcode也支持用户自定义代码块,如为类添加一个属性时,可以预编译一个通用函数拷贝到代码块中,即可快速调用添加属性的代码块。

    @property (nonatomic, assign) NSInteger num;

    将这句代码选中直接拖到右侧的代码块中,会出现下面一个弹窗

    1.Title:标题,标识这段代码块的用途。

    2.Summary:概要,标题的补充说明,依然与代码块的用途有关。

    3.Platform:平台,可以选择在iOS/MacOS/TVOS/WatchOS这些平台开发的哪个平台使用,一般默认All,Language:语言,使用哪种语言开发,可选比较多,根据实际使用选择即可。

    4.Completion Shortcut:设置调用的快捷方式,尽量简短易记。

    5.Completion Scopes:代码块的作用域,一般拖进来的时候编译器会选好,不需修改。

    6.Edit:编辑,点击进入代码块的编辑模式,可以对代码块做修改。

    7.Done:完成。

    在代码块编辑中,往往为了适用不同的位置,变量名和参数类型等不能确定,调出来挨个修改就比较麻烦了,因此可以在编辑中使用<#提示输入内容#>的方式将需要填的内容包容起来,注意<##>输入完整就会被编译器转化为不可更改中间内容的状态,因此在输入时虽好先输入<#something#,待中间内容输入完成后,再输入>结束。

    如下:@property (nonatomic, assign) NSInteger <#var#>;,点击Done之后就算完成了。


    再调用时,只需要输入设置的快捷方式即可:


    回车之后代码就替换过来了;


    只需要改一下变量名,就能在1秒内创建一个属性变量了。

    这就是最简单的代码块使用了,代码块可以用来封装大量重复的代码,那么你一定想的到那些代码是重复的吧

    1.TableView/CollectionView 的Delegate和DataSource协议方法。

    2.GCD线程函数

    3.属性创建

    4.方法、属性的格式化注释

    5.其他复用代码的场景

    善于使用代码块会极大的提升开发人员的效率和程序的规整,避免重复输入代码带来的时间消耗和bug发生。


    展开全文
  • 3、根据自己需要来设置注释 范例:我选择的是第二个函数设置 在点击settings.json 之后会跳转 settings.json 并自动生成 “fileheader.cursorMode” 直接在 “fileheader.cursorMode” 内部、安装插件...
  • IOS Block 代码块使用 (一)

    千次阅读 2013-09-26 12:48:07
    代码块的语法  代码块的书写和C语言函数的语法格式有点像,例如下面求和函数分别用C 语言和代码块来实现: int add(int a,int b) {  return a+b; } int (^add)(int a,int b) = ^(int a,int b){ return a ...
  • synchronized同步代码块

    2017-08-12 13:34:22
    public void doIt(){synchroized(new object()){XXXX}}这样写为什么错?
  • 计算Python的代码块或程序的运行时间

    万次阅读 多人点赞 2016-11-10 00:44:04
    1.运用场景在很多的时候我们...2. 实现方法计算Python的某个程序,或者是代码块运行的时间一般有三种方法。 方法一 import datetime start = datetime.datetime.now() run_function(): # do somethingend = da
  • ruby 的代码块和yield

    千次阅读 2014-06-21 17:55:31
    =begin yield的意思其实很简单,就是暂停代码的运行...代码块(Blocks)是指一块代码,用大括号({})或者do…end来标明起始和结束,代码块只能跟在方法调用后边。 yield语句:在方法内部使用yield语句来占位,当方法执行
  • HBuilder扩展代码块功能

    千次阅读 2017-09-27 10:03:48
    作为程序员,大家都应该比较烦的事情就是将相同的代码块复制到N多个地方,但是这种情况有不可避免。为了解决这个问题,我希望实现的是直接将对应的模块提前在编辑器中编辑好,然后用一两个字母提示就能将这个模块...
  • Typora设置插入代码块快捷键方法

    万次阅读 2019-07-24 19:23:12
    在Typora给增加代码块没有设置快捷键,需要自己设置,步骤如下: 一、打开下图 二、第一步点开后往下来,打开偏好设置 三、使用支持json的编辑器打开下述文件 四:在下除代码处增加代码 ***或者把下面代码复制...
  • 像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 。所有的这些依靠代码块结尾的 例子:while 循环的重定向#!/bin/bash # redir2....
  •  iOS4引入了一个新特性,支持代码块的使用,这将从根本上改变你的编程方式。代码块是对C语言的一个扩展,因此在Objective-C中完全支持。如果你学过Ruby,Python或Lisp编程...简单的说,你可以通过代码块封装一组代
  • s.trigger = 'title' #ng-是激活字符,即按下ng-后会触发该代码块 s.expansion='title${1:Show/Text}="$2"' #expansion是代码块的输出内容,其中$0、$1是光标的停留和切换位置。 #$1是第一个停留光标,$0是最后...
  • 在iOS4中使用代码块

    千次阅读 2012-08-13 00:18:05
    在iOS4中使用代码块-基础知识   iOS4引入了一个新特性,支持代码块的使用,这将从根本上改变你的编程方式。代码块是对C语言的一个扩展,因此在Objective-C中完全支持。如果你学过Ruby,Python或Lisp编程语言,...
  • 最近在准备面试,复习java基础知识,对java中和static关键字相关的静态方法、静态代码块、非静态代码块、静态成员变量的用法进行了详细的总结。 1. 静态成员变量 声明为static关键词修饰的变量叫做静态成员变量,也...
  • JavaScript 语句、注释和代码块

    千次阅读 2016-09-21 18:18:56
    总结 Javascript语句是给浏览器发出...代码块作用是一并执行语句序列,以左花括号开始,右花括号结束 对大小写敏感但是会忽略多余空格 可以在字符串中使用反斜杠对代码进行拆行 eg: document.write("你好 \ 世界!")
  • ruby的Proc和代码块(Block)

    千次阅读 2012-01-06 10:42:08
    在ruby中代码块是在大括号和do-end中间的部分,代码块只能出现在一个方法的后边,它紧接在方法最后一个参数的同一行上。代码块的内容并不会被马上执行,当执行到被调用的方法时,解释器的运行时环境会记住代码块出现...
  • LUA教程局部变量与代码块(block)-14

    千次阅读 2020-07-12 09:46:09
    使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。 x = 10 local i = 1 -- local ...
  • 怎样跳出if语句的代码块

    千次阅读 2020-05-11 19:35:31
    如果不想用goto语句的话,可以用以下方式 do { dosomething(); if(condition) break; ... } while (0);
  • ruby元编程3------代码块

    万次阅读 2016-01-29 11:27:56
    一. 代码块的基本调用 ex1: def test_method(a, b)  a + yield(a, b) ...test_methd接受一个代码块,yield处理代码块的调用位置,而且代码块是必须传的 ex2: def test_method2(a, b)  a 
  • ————————————————增加定制代码块—————————————— [听英文的视频听到的内容,有一半是猜的,大概内容没问题,如果想看视频视频链接,当然,必须要翻墙的~为了避免我不专业的翻译给大家...
  • IDEA异常处理和代码块包装

    千次阅读 2018-08-30 15:21:29
    在码代码的过程中,需要我们对异常进行处理,如图所示: 快捷方式一(光标移到该代码行,Alt+Enter),可以异常外抛出,也可以try-catch: 选择Add Exception to method signature: 选择Surround with try/catch...
  • 一篇文章看懂iOS代码块Block

    万次阅读 2016-05-12 21:13:53
    iOS代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用
  • 【Typora】设置插入代码块快捷键

    千次阅读 2019-12-13 23:40:42
    原文链接 一、打开下图 ...四:在下除代码处增加代码 ***或者把下面代码复制进去即可 /** For advanced users. */ { "defaultFontFamily": { "standard": null, //String - Defaults to "Tim...
  • 在iOS4中使用代码块-基础知识

    千次阅读 2012-04-19 10:53:04
     在本系列的第一部分,我们学会了如何声明和调用基本的Objective-C代码块。动机是为了了解如何有效的使用iOS4提供的使用代码块作为参数的API。在这一部分我们将重点转向写我们自己的使用代码块的方法。通过理解在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 228,818
精华内容 91,527
关键字:

do代码块的作用