当前位置: 首页 > news >正文

泰安网站推广优化为什么很少用python做网站

泰安网站推广优化,为什么很少用python做网站,建立网站专业公司,wordpress文章在新窗口打开final关键字是一个常用的关键字#xff0c;可以修饰变量、方法、类#xff0c;用来表示它修饰的类、方法和变量不可改变#xff0c;下面就聊一下使用 final 关键字的一些小细节。细节一、final 修饰类成员变量和实例成员变量的赋值时机对于类变量#xff1a;声明变量的时候… final关键字是一个常用的关键字可以修饰变量、方法、类用来表示它修饰的类、方法和变量不可改变下面就聊一下使用 final 关键字的一些小细节。细节一、final 修饰类成员变量和实例成员变量的赋值时机对于类变量声明变量的时候直接赋初始值在静态代码块中给类变量赋初始值如下代码所示public class FinalTest {    //a变量直接赋值private final static  int a  1;private final static  int b;//b变量通过静态代码块赋值static {b2;} } 对于实例变量在声明变量的时候直接赋值在非静态代码块中赋值在构造器中赋初始化值如下代码所示public class FinalTest {//c变量在在声明时直接赋值private final  int c 1;private final  int d;private final  int e;//d变量在非静态代码块中赋值{d2;}//e变量在构造器中赋值FinalTest(){e3;} } 细节二、当 final 修饰的成员变量未对它进行初始化时会出现错误吗答会出现错误。因为 java 语法规定final 修饰的成员变量必须由程序员显示的初始化系统不会对变量进行隐式的初始化。如下图所示未初始化变量就会出现编译错误细节三、final 修饰基本类型变量和引用类型变量的区别如果 fianl 修饰的是一个基本数据类型的数据一旦赋值后就不能再次更改。那么 final 修饰的是引用数据类型呢这个引用的变量能够改变吗看下面的代码public class FinalTest {//在声明final实例成员变量时进行赋值private final static Student student  new Student(50, Java);public static void main(String[] args) {//对final引用数据类型student进行更改student.age  100;System.out.println(student.toString());}static class Student {private int age;private String name;public Student(int age, String name) {this.age  age;this.name  name;}Overridepublic String toString() {return Student{ age  age , name  name  \ };}} }//下面是打印结果 Student{age100, nameJava} 从打印结果可以看到引用数据类型变量 student 的 age 属性修改成 100是可以修改成功的。结论当 final 修饰基本数据类型变量时不能对基本数据类型变量重新赋值因此基本数据类型变量不能被改变。对于引用类型变量而言它仅仅保存的是一个引用final 只保证这个引用类型变量所引用的地址不会发生改变即一直引用这个对象但这个对象里面的属性是可以改变的。细节四、final 修饰局部变量的场景fianl 局部变量由程序员进行显示的初始化如果 final 局部变量进行初始化之后就不能再次进行更改。如果 final 变量未进行初始化可以进行赋值并且只能进行一次赋值一旦赋值之后再次赋值就会出错。下面的代码演示 final 修饰局部变量的情况细节五、final 修饰方法会对重载有影响吗重写呢对于重载final 修饰方法后是可以重载的如下代码public class FinalTest {public final void test(){}//重载方法不会出现问题public final void test(String test){} } 对于重写当父类的方法被 final 修饰的时候子类不能重写父类的该方法如上代码所示可以看到会出现 cannot override ,overridden method is final 的编译错误提示细节六、final 修饰类的场景当用final修饰一个类时表明这个类不能被继承。也就是说如果一个类你永远不会让他被继承就可以用 final 进行修饰。final 类中的成员变量可以根据需要设为 final但是要注意 final 类中的所有成员方法都会被隐式地指定为 final 方法。细节七、写 final 域的重排序规则你知道吗这个规则是指禁止对 final 域的写重排序到构造函数之外这个规则的实现主要包含了两个方面JMM 禁止编译器把 final 域的写重排序 到 构造函数 之外编译器会在 final 域写之后构造函数 return 之前插入一个 StoreStore 屏障。这个屏障可以禁止处理器把 final 域的写重排序到构造函数之外给举个例子要不太抽象了先看一段代码public class FinalTest{private int a;  //普通域private final int b; //final域private static FinalTest finalTest;public FinalTest() {a  1; // 1. 写普通域b  2; // 2. 写final域}public static void writer() {finalTest  new FinalTest();}public static void reader() {FinalTest demo  finalTest; // 3.读对象引用int a  demo.a;    //4.读普通域int b  demo.b;    //5.读final域} } 假设线程 A 在执行 writer()方法线程 B 执行 reader()方法。由于变量 a 和变量 b 之间没有依赖性所以就有可能会出现下图所示的重排序由于普通变量 a 可能会被重排序到构造函数之外所以线程 B 就有可能读到的是普通变量 a 初始化之前的值零值这样就可能出现错误。而 final 域变量 b根据重排序规则会禁止 final 修饰的变量 b 重排序到构造函数之外从而 b 能够正确赋值线程 B 就能够读到 final 域变量 b初始化后的值。结论写 final 域的重排序规则可以确保在对象引用为任意线程可见之前对象的 final 域已经被正确初始化过了而普通域就不具有这个保障。细节八读 final 域的重排序规则你知道吗这个规则是指在一个线程中初次读对象引用和初次读该对象包含的 final 域JMM 会禁止这两个操作的重排序。还是上面那段代码public class FinalTest{private int a;  //普通域private final int b; //final域private static FinalTest finalTest;public FinalTest() {a  1; // 1. 写普通域b  2; // 2. 写final域}public static void writer() {finalTest  new FinalTest();}public static void reader() {FinalTest demo  finalTest; // 3.读对象引用int a  demo.a;    //4.读普通域int b  demo.b;    //5.读final域} } 假设线程 A 在执行 writer()方法线程 B 执行 reader()方法。线程 B 可能就会出现下图所示的重排序可以看到由于读对象的普通域被重排序到了读对象引用的前面就会出现线程 B 还未读到对象引用就在读取该对象的普通域变量这显然是错误的操作。而 final 域的读操作就“限定”了在读 final 域变量前已经读到了该对象的引用从而就可以避免这种情况。结论读 final 域的重排序规则可以确保在读一个对象的 final 域之前一定会先读包含这个 final 域的对象的引用。结束今天给大家总结了一下使用 final 关键字容易忽视的一些小细节看完希望你能有所收获。 往期推荐 Java中的Switch都支持String了为什么不支持long对象复制的7种方法还是Spring的最好用分布式ID生成的9种方法特好用关注我每天陪你进步一点点
http://wiki.neutronadmin.com/news/222602/

相关文章:

  • 怎样建立一个公司网站网站登录密码怎么取消保存
  • 沈阳住房建设局网站全球十大互联网企业
  • 视觉asp网站源码郴州新网二手车信息
  • 天津网站建设行业新闻wordpress 不显示账号名
  • wordpress插件如何应用上海网优化seo公司
  • 网站优化的目的软件app开发公司如何选择
  • 国内高清视频素材网站推荐企业网站模板湖南岚鸿
  • 企业建站做网站安徽建站费用
  • 中山网站建设文化平台做盗版漫画网站
  • 泰安58路优化火车票
  • 江苏省住房城乡建设厅网站网站建设 jsp php
  • 做网站域名的好处是什么安徽元鼎建设公司网站
  • 网站备案进程查询html网站开发实例视频
  • 网上给别人做网站十堰网站推广
  • 商城网站开发流程图网站开发学什么 2018
  • 网站建设实训总结封面绵竹网站建设
  • 高端网站建设的小知识郑州网络推广团队
  • 网站自适应手机端专业网站建设费用包括
  • 小天才电话手表网站wordpress自定义分类法
  • 河南做网站送记账广告创意
  • 广州公司网站制作企业门户样式
  • 公司网站的作用意义维护建设管理那个网站做二手买卖的
  • 绛县网站建设网站title标签内容怎么设置
  • 做短视频的网站先进网站建设流程
  • 资源网站都有哪些山河集团建设有限公司网站
  • php网站目录系统江西百度推广公司
  • 电热设备网站建设网站推广手段有哪些
  • 5年网站续费多少钱太康做网站公司
  • 网站聊天工具代码建站代理
  • 怎么做一个网站怎么样网站死链接提交