首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java的this怎么理解

大家好,又见面了,我是全栈君 java提供了一个this关键字,this关键字总是指向调用该方法的对象。根据this出现位置的不同,this作为对象的默认引用有两种情形。...(推荐学习:java课程) a)、构造器引用该构造器正在初始化的对象。(this总是引用该构造器正在初始化的对象。比如,局部变量和全局变量重名,this总是引用构造器的局部变量)。...b)、在方法引用调用该方法的对象。 this关键字最大的作用就是让类中一个方法,访问该类的另一个方法或者实例变量。(java允许对象的一个成员直接调用另一个成员,可以省略this前缀。...所以,static修饰的方法不能使用this引用。...由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不使用static修饰的普通成员,因此java语法规定:静态成员不能直接访问非静态成员。

52210
您找到你想要的搜索结果了吗?
是的
没有找到

Java的volatile到底怎么理解

Java内存模型的特性 Java内存模型(Java Memory Model,JMM)定义了程序各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式,主要围绕并发编程时的原子性、可见性和有序性这三个特征...在Java,对基本数据类型的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行完成,要么就不执行。...Java内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性的。此外,Java还提供了volatile关键字来实现可见性。...有序性(Ordering) Java内存模型的有序性指的是在并发时,程序的执行顺序应该按照代码的先后顺序执行。...Java内存模型提供了happens-before规则来帮助我们理解并发操作的有序性。此外,Java还提供了volatile关键字和synchronized关键字来保证有序性。

11710

Java事务的理解

Java事务的理解 今天在做固资系统时遇到一个问题,就是无论如何事务提交都不生效,于是决定实施实验,探究下背后的原理。本文主要分为三部分,第一部分讲解事务机制生效的原理。...也就是单纯的 java 语言层面的完成不了事务控制的。所以,要了解清楚事务执行的原理就要对于 mysql 的事务机制有了解。我们以 mysql 举例。...此时就面临着问题,如果你在有@Transaction 注解的方法内又使用了 try catch,就会导致@Transaction 捕获异常失败,怎么解决呢?...java异常分类 通过不断比较发现,在 java springboot 系统异常都是继承自 Throwable,Error 及 Exception 都是继承自该 Throwable,而 Exception...是觉得前面概念这些可能初次接触,觉得云里雾里的,你心中可能从有点糊涂那刻起就升出疑团,费了这么大劲,搞出这么多事务隔离级别,到底是为了解决啥问题,所以在这部分公布答案,如果做过开发,并且做的跟交易密切相关的业务,就更能理解我下面所说的问题

12810

理解Java的ThreadLocal

提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?...等等问题,本文将总结一下我对ThreadLocal的理解和认识,希望让大家理解ThreadLocal更加透彻一些。...对象存放在哪里 在Java,栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程可见,即栈内存可以理解成线程的私有内存。而堆内存的对象对所有线程可见。...关于弱引用,了解更多,请访问译文:理解Java的弱引用 使用场景 实现单个线程单例以及单个线程上下文信息存储,比如交易id等 实现线程安全,非线程安全的对象使用ThreadLocal之后就会变得线程安全...,因为每个线程都会有一个对应的实例 承载一些线程相关的数据,避免在方法来回传递参数 注意:Android的ThreadLocal与Java实现略有不同,但是原理是一致的。

45640

Java Varargs 机制的理解

到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类 型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了...在 J2SE 1.5,也分别在java.io.PrintStream类和java.lang.String类中提供了类似的功能。...当个数可变的实参遇到泛型 J2SE 1.5新增了“泛型”的机制,可以在一定条件下把一个类型参数化。...造成这个现象的原因在于J2SE 1.5的泛型机制的一个内在约束——不能拿用标识符来代表的类型来创建这一类型的实例。在出现支持没有了这个约束的Java版本之前,对于这个问题,基本没有太好的解决办法。...重载的选择问题 Java支持“重载”的机制,允许在同一个类拥有许多只有形参列表不同的方法。然后,由编译器根据调用时的实参来选择到底要执行哪一个方法。

70730

理解 Java 的 NumberFormatException 异常

如果我在 Java 对字符串和数字直接进行类型转换的话,我们有可能会遇到 NumberFormatException 异常。...NumberFormatException 这个异常是 Java 的一个 unchecked 类型异常,因此程序不会被要求强制进行处理。...构造函数 如果我们在构造函数对不是数字的字符串进行类型转换的话,将会有可能抛出这个异常。 例如我们尝试将一个字符串转换为 Integer 或Double 对象,但是输入的字符串不是数字。...在 Java ,负数是允许的,但是你不能使用下划线,你只能使用划线。 语言特性的数字格式化 这里我们说的语言特性数字格式化主要是因为不同地区和国家对数字的表达方式是不一样的。...总结 在这个页面,我们对将 String 格式化为数字类型,使用 Java Number API 的方法和可能出现的异常进行了一些说明。 在这里我们看到了常见的导致异常的原因和我们可以避免的办法。

6K00

javabean的理解

javaBean在MVC设计模型是model,又称模型层,在一般的程序,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA...众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。 ...用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象...javaBean在MVC设计模型是model,又称模型层,在一般的程序,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA...众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。

42210

深度理解Java的static

3、在静态的方法内,不能使用this和super关键字: 三、问题思考 1、java为什么要有static关键字? ①static可以不需要实例化对象就可以访问类的属性和方法。...Java的static关键字不会影响到变量或者方法的作用域。在Java能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字。...理由: ①局部变量最好不要设成静态变量,局部变量是有生命周期的,用完后JAVA很快就回收资源了。 如果设成静态变量,那JAVA怎么回收被其占用的内存。...这时候编译器就不知道你这个变量怎么初始化了,这个是和java的设计相关的。java全是面向对象设计的,单独一个方法不能持有一块空间。...一个软件你没法让客户知道你内部的详情,当然客户也就没办法知道怎么去实例化对象,更不知道实例化对象时需要输入什么参数了。所以只能采用静态方法。 ③资源必须要优先加载时要static修饰。

1.1K20

Java接口作用的理解

关于Java接口作用的深入理解。这是个很容易遇到的问题吧,看下面红色的部分应该就能理解了。要把接口视作一种共同规范。...总之,引入抽象类和接口是为了是代码逻辑更加清晰,建议去看一些简单的jdk源码,然后根据源码自己画一个类的UML图,理解一下平时所有的集合框架List Set这些的整体结构。...---- 2019/4/26 补充: 今天在看 JDBC 源码的时候,发现第一句 的 class.forName(),做了很多的事情, 在jdk ,只有 Driver 的一个接口,但是 mysql-connector-java.jar...这样就充分体现了扩展性,我在 class.forName 里面,指定加载 第三方的 Driver,那么在类加载的时候,可以完成 jdk Driver 接口, 在 第三方jar 具体实现的class...,但是 我们知道就算知道接口也不行,因为在 jdk 只有一个接口, 所以在 第三方 的jar里面,存在一个 配置文件,指向了在 第三方 jar 具体实现了 jdk sql 包下的 Driver

38210

JavaVo类的理解

持久对象 可以看成是与数据库的表相映射的java对象。使用Hibernate来生成PO是不错的选择。 二、VO:value object值对象。...我觉得有时候也可以在某个商业逻辑或者表示层使用PO 此时在这个商业逻辑的过程PO的状态是不发生变化的,比如显示一条商品详细信息的商业逻辑。...在开发过的项目中,规模都很小,我一直都把PO当VO用,因为PO确实很方便,结合Hibernate的DAO 我使用JAVA的集合对象作为值传递的载体,当然Struts也是我的不二之选。...vo:value object,值对象 一般在java中用的多的是pojo:plain oriented java object 原始java对象,pojo一般和数据库的表是一一对应的。...既然有了实体类与数据库的字段一一对应了 那为什么还要VO呢 答案是因为在复杂的业务逻辑,往往单一实体类无法满足我们的需求,就举个简单的例子,一个课程系统中有一级分类和二级分类,那么一个一级分类应该会对应多个二级分类

2.6K20
领券