static

static环境中访问非static变量为什么会报错

本小妞迷上赌 提交于 2020-02-10 17:53:34
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。 来源: CSDN 作者: 小乔夜谈 链接: https://blog.csdn.net/qq_44620773/article/details/104251325

[java]静态方法访问非静态方法的方法

送分小仙女□ 提交于 2020-02-10 09:25:43
是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下: Test.java public Test{ public void notStatic(){ System.out.println("我访问了非静态方法"); } public static void main(String[] args){ notStatic();//错误,无法访问 } } 解决办法有二: 一 、设置其为静态方法 //加入 static public static void notStatic(){ System.out.println("我访问了非静态方法"); } 二、new 对象 引用方法 并不是什么时候都可以设置其为静态方法,比如安卓开发中findViewById只能在非静态方法中调用,那怎么办呢.很简单,new对象引用。 Test.java public Test{ public void notStatic(){ System.out.println("我访问了非静态方法"); } public static void main(String[] args){ //notStatic();//错误,无法访问 Test test = new Test(); test.notStatic(); //引用 } } 关于 static 此部分文章原文链接: JAVA菜鸟入门篇

设计模式:单例模式

自作多情 提交于 2020-02-10 01:11:08
单例模式就是采取一定方法保证在整个软件系统中,对于某个类只能存在一个对象的实例,并且该类只提供一个取得其对象实例的方法。属于创建型。 优点 在内存里只有一个实例,减少了内存开销 可以避免对资源的多重占用 设置全局访问点,严格控制访问 单例的实现 懒汉式 /** * 懒汉式单例模式 * (在多线程下不能保证创建的实例是唯一的) */ public class LazySingleton { private LazySingleton(){} //和饿汉式不同,这里不实例化,而是在需要的时候再去new private static LazySingleton instance; //在多线程下不能保证创建的实例是唯一的 public static LazySingleton getInstance(){ if(instance==null){ instance = new LazySingleton(); } return instance; } } 懒汉式改进(线程安全) /** * 懒汉式改进 线程安全的单例模式 */ public class SynchronizedSingleton { private SynchronizedSingleton(){} //和饿汉式不同,这里不实例化,而是在需要的时候再去new private static volatile

Static files in ASP.NET Core - ASP.NET Core中的静态文件处理(链接)

元气小坏坏 提交于 2020-02-09 01:27:27
微软官网的这篇文章阐述了,在ASP.NET Core中的静态文件处理: Static files in ASP.NET Core 注意其中有几点很有用: 使用FileExtensionContentTypeProvider,来自定义静态文件扩展名的映射 启用非标准静态文件类型 ,可以让ASP.NET Core处理未知的静态文件类型,但是文章中也提到了这样做很危险,不建议这么做,推荐使用上面的FileExtensionContentTypeProvider来处理非标准的静态文件类型 最后文章中还提到了: ASP.NET Core apps hosted in IIS use the ASP.NET Core Module to forward all requests to the app, including static file requests. The IIS static file handler isn't used. It has no chance to handle requests before they're handled by the module. 由此可见,静态文件的HTTP请求在IIS中,会由ASP.NET Core Module转发到ASP.NET Core应用程序中进行处理,和IIS的处理程序并无关联。 来源: https://www

深入分析Java中的关键字static

馋奶兔 提交于 2020-02-08 11:57:15
在平时开发当中,我们经常会遇见static关键字。这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析。先给出这篇文章的大致脉络: 首先,描述了static关键字去修饰java类、方法、变量、代码块的方法 然后,从底层分析static关键字, 接下来,给出static的一些使用场景和案例 最后,对static进行一个总结,包括和普通变量的区分。 OK,开始今天的文章。 一、static关键字的基本用法 1、static关键字基本概念 我们可以一句话来概括:方便在没有创建对象的情况下来进行调用。 也就是说:被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问。对于这个概念,下面根据static关键字的四个基本使用来描述。然后在下一部分再来去分析static的原理,希望你能认真读完。 2、static关键字修饰类 java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。下面看看如何使用。 如果没有用static修饰InterClass,则只能new 一个外部类实例。再通过外部实例创建内部类。 3、static关键字修饰方法 修饰方法的时候,其实跟类一样,可以直接通过类名来进行调用: 4、static关键字修饰变量 被static修饰的成员变量叫做静态变量

this和static关键字

拈花ヽ惹草 提交于 2020-02-08 04:23:24
this关键字 this的本质: “创建好的对象的地址 ” ! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表** 当前对象 ** 。 this的常用方法: 1. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。 2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。 3. this不能用于static方法中 。static是静态方法,存放在方法区。this是当前类的对象,存放在堆中。当静态方法执行时,this还不存在,所以不可能使用this。      例:this()调用重载构造方法 public class TestThis2 { int a , b , c ; TestThis2 ( ) { System . out . println ( "正要初始化一个Hello对象" ) ; } TestThis2 ( int a , int b ) { this ( ) ; //调用无参的构造方法,并且必须位于第一行 a = a ; //这里都是指的局部变量而不是成员变量 //这样就区分了成员变量和局部变量,这种情况占了this使用情况大多数 this . a = a ; this . b =

适配器模式

自古美人都是妖i 提交于 2020-02-08 03:44:07
1. 定义 将一个类的接口转换成另一个种接口,让原本接口不兼容的类可以兼容。 2. 代码 场景:手机充电需要5V电压,所以需要将220V电压转换为5V电压 public class AdapterDemo { static public class Voltage220 { public int output220 ( ) { int src = 220 ; System . out . println ( "电压 = " + src ) ; return src ; } } interface Voltage5 { int output5 ( ) ; } static class VoltageAdapter implements Voltage5 { private static Voltage220 voltage220 ; public VoltageAdapter ( ) { voltage220 = new Voltage220 ( ) ; } @Override public int output5 ( ) { int src = voltage220 . output220 ( ) ; int dst = src / 44 ; return dst ; } } static class Phone { public void charging ( Voltage5

C++ static 字段

左心房为你撑大大i 提交于 2020-02-07 12:03:32
1 全局变量 全局变量申明之前冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 全局变量和静态全局变量相同点: 二者都存储在Data段。 全局变量(小)和静态全局变量(大)的作用域不同: 非静态全局变量 的作用域是 整个源程序 , 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 静态全局变量 的作用域是只在定义该变量的 源文件内有效 , 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2 局部变量 静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区。 3 函数 函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下: 静态函数只能在 声明它的文件 中可见,其他文件不能引用该函数 不同的文件可以使用相同名字的静态函数,互不影响 4 面向对象 A. 静态数据成员 在类内数据成员的声明前加上static关键字,该数据成员就是类内的静态数据成员。 其特点如下: 1)静态数据成员存储在全局数据区,静态数据成员在定义时分配存储空间,所以不能在类声明中定义。 2)静态数据成员是类的成员

反射类 Modifier类

二次信任 提交于 2020-02-07 10:05:14
/*--> */ /*--> */ /*--> */ /*--> */ Modifier类 Modifier用来表示各修饰符的权重值,以16进制表示 16转10进制计算规则: 16进制数转10进制数的原理:1000=1X16^3(16的3次方)+0X16^2(16的2次方)+0X16(16的1次方)+0X1(16的0次方)=4096。 A = 10, B = 11,,C =12,D=13,E=14,F= 15。 FFF=15*(16^2) + 15*(16^1) + 15*(16^0) = 4095。 修饰符 16进制 10进制 PUBLIC 0x00000001 1 PRIVATE 0x00000002 2 PROTECTED 0x00000004 4 STATIC 0x00000008 8 FINAL 0x00000010 16 SYNCHRONIZED 0x00000020 32 VOLATILE 0x00000040 64 TRANSIENT 0x00000080 128 NATIVE 0x00000100 256 INTERFACE 0x00000200 512 ABSTRACT 0x00000400 1024 STRICT(strictfp) 0x00000800 2048 BRIDGE 0x00000040 64 VARARGS(可变参数) 0x00000080

java面向对象总结(一)

て烟熏妆下的殇ゞ 提交于 2020-02-07 04:53:33
1,抽象,封装,继承,多态是面向对象程序设计中得四个特点.   2,面向对象得软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现.   可概括为如下过程:分析用户需求,从问题中抽取对象模型;细化模型,设计类,包括类的属性和类间的   相互关系,同时观察是否有可以直接引用的已有类或部件;选定一种面向对象的编程语言,具体编码实现   上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案.   3,面向对象程序设计方法的优点是:可重用性,可扩展性,可管理性.   4,类的定义:class前的修饰符分为访问控制符和非访问控制符两大类.访问控制符包括public和private.   非访问控制符包括abstract(抽象),final(最终).   5,final类是最终类,是不能有子类的类.abstract和final不能同时修饰一个类,因为抽象类本身没有具体对象,   需要派生出子类后在创建子类的对象.而最终类不可能有子类.   6,创建对象的格式为: 类名 对象名=new 构造方法(参数);注意前面是类名后面是构造方法.   注意构造方法没有返回类型,也不能写void,主要用于完成类对象的初始化工作,一般不能直接由编程   直接调用,而是用new运算符来调用.   7,如果class前面由public修饰符,则默认构造方法的前面也应该有public修饰符.   8