在java编程过程中,会经常写到一些关键字,但是对于他们应用的方式其实一直是模仿状态,并没有很实质的去了解,为什么要这么用,导致程序不能优化,或者出现了bug不明所以,因而再详细的去重温了一下各种了解的少的或是易混淆的关键字,就像,通过一只象脚,慢慢的接触,认识到了象的各个部分,然后再从整只大象的角度去理解,系统的归纳总结,达到对全局的把握。

part A:易混淆关键字

明白这些后就可以很简单的使用某一对象的属性,最开始我在所有类的属性中都用的private关键字,之后需要调用这个类中的该属性时,均采用形参的方式,既在实例化对象时将该属性以形参的方式传递给要调用的对象,但是,若是直接使用public修饰符,则可直接在需调用的类中调用,例:

//Data类中

public String string;

public int weight;//将Data类中的属性设为public

//manager类中

Node node=new Node();

node.data.weight++;//直接在其类中调用和修改Data类实例化的对象的属性值

类中的方法大多使用public修饰也是同样的道理。修饰符决定的是能在什么范围内直接调用该属性或方法。private修饰符有其特别的用处,比如在定义权限时,不希望外界修改的属性可以考虑使用private修饰符。

part B:少用但有些场合不得不用的关键字

synchronized:在单线程程序中,这个关键字几乎没什么存在的价值,但是对于多线程程序,当一个变量在多个线程中可能存在同时被使用的情况时,这个关键字就必不可少了,否则程序将报异常。

该关键字就是一把锁,当它修饰某一个变量时则表示,该变量一次只能被一个线程使用,若还有另外一个线程需要使用该变量必须等待前一个线程使用完毕后方可。这样就能防止一个变量被同时使用导致报错。该关键字还能应用于一段代码,我在这里例举的为该关键字应用于变量的案例:

public volatile int p;

//线程1

while(true){

p--;//

}

//线程2

while(true){

p=p+3;//

}

此时程序可能抛出异常,可加上这样一句

synchronized (p){};

static:static是一个经常用到但是不容易理解的关键字,从计算机存储来说,既从他的物理地址来说,static修饰的属性或方法等是放在栈中的,如下图所示,计算机内存分为堆与栈,一般来说,对于一个变量,他的首地址存放于栈中,内容放置于堆中,通过栈中的地址来寻找,但是对于static修饰的变量来说,内容是直接存放于栈中的,并不需要去寻址。

static修饰的函数或变量使用不需要实例化,java中最常见的且必须使用static的是主函数main,我最开始一直不明白为什么main函数一调用就必须使用static,否则报错,这是因为main函数在未实例化前就必须使用,而static刚好具备这个功能,static修饰的代码在编译前就能执行。

java中常用的关键字_java中的常用的关键字相关推荐

  1. java中用于定义小数的关键字_Java 中用于定义小数的关键字有两个:( ) 和 ( )。_学小易找答案...

    [填空题]列举至少三种中药饮片现代贮藏方法 [单选题]用于薄壁形零件联接时,应采用 . [填空题]若螺纹的直径和螺纹副的摩擦系数一定, 则拧紧螺母时的效率取决于螺纹的 和 . [单选题]以太网采用的介 ...

  2. java voliate关键字_java中voliate关键字有什么用?

    1.保证内存可见性 内存可见性,即线程A对volatile变量的修改,其他线程获取的volatile变量都是最新的. 说到内存可见性就必须要提到Java的内存模型,如下图所示: 如上图所示,所有线程的 ...

  3. 什么是java的关键字_java中常见的关键字

    什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...

  4. java中的排序方法_Java中8种常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

  5. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  6. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  7. java序列化有什么用_java中序列化的作用

    一  什么叫序列化 通俗点讲:它是处理对象流的一种机制,即可以很方便的保存内存中java对象的状态,同时也为了方便传输. 二 序列化有什么作用 1.方便传输,速度快,还很安全,被调用方序列化,调用方反 ...

  8. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  9. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

  10. java在创建对象时必须_Java中5种创建对象的方式

    以下是一些在Java中创建对象的方法: 1. 使用new关键字 使用new关键字是创建对象的最基本方法.这是在java中创建对象的最常见方法.几乎99%的对象都是这样创建的.通过使用这个方法,我们可以 ...

最新文章

  1. 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)
  2. ZOJ-1654 Place the Robots---二分图最小点覆盖+构图
  3. OSPFv2的综合实验试题分析第1例(CCNP阶段)
  4. docker 开启remote api
  5. 区块链BaaS云服务(35)亦笔科技ODRChain使用场景
  6. 【小米笔试题】朋友圈问题-并查集解法
  7. 【笔记】iOS开发基础笔记二
  8. 算法学习之路|程序运行时间
  9. 计算机毕业设计JAVA房屋租赁系统mybatis
  10. Qt+MySQL实现数据库图书管理系统
  11. Aliplayer 阿里云播放器自定义视弹出框 包含全屏
  12. fme坐标转换器_利用FME做坐标转换
  13. LSTM神经网络详解
  14. 教育类App原型制作分享-Busuu
  15. python人脸考勤系统_python人脸考勤系统Python3多进程 multiprocessing 模块实例详解
  16. 破解新浪微博js加密登陆超详细
  17. 各国语言中的“你好”
  18. 用计算机管理硬盘分区,硬盘分区diskgenius工具使用方法,教你如何进行硬盘管理...
  19. opencv图像形态学运算
  20. 我的世界服务器皮肤显示mod,【回归了】McMySkin Mod - Minecraft单机联机皮肤显示Mod...

热门文章

  1. MyEclipse 2015优化技巧
  2. Vue-cli 项目打包布署(简单清晰)
  3. MySQL数据库索引及失效场景
  4. 8除以2表示什么意思_八字中劫财,比肩分别表示什么意思
  5. groovy+mysql数据库_使用Groovy连接到MySQL
  6. div靠边隐藏_css如何隐藏div不占位置?
  7. axure命令行_Axure变量详解
  8. js解析java对象数组_js接收并转化Java中的数组对象的方法
  9. 三个数比较大小函数调用c语言,C语言函数的调用——比较两个数的大小
  10. java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)