静态方法

泛型

馋奶兔 提交于 2020-03-06 08:22:07
01_泛型的概念 ========================================================================================================================= 02_使用泛型的好处 Demo01Generic.java package com.itheima.demo03.Generic; import java.util.ArrayList; import java.util.Iterator; public class Demo01Generic { public static void main(String[] args) { show02(); } /* 创建集合对象,使用泛型 好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错) 弊端: 泛型是什么类型,只能存储什么类型的数据 */ private static void show02() { ArrayList<String> list = new ArrayList<>(); list.add("abc"); //list.add(1); //add(java.lang.String)in ArrayList

静态方法和实例方法对于委托的区别

时光总嘲笑我的痴心妄想 提交于 2020-03-05 22:36:08
当一个类的实例的方法被赋给一个委托对象时,在上下文中不仅要维护这个方法,还要维护这个方法所在的实例。System.Delegate 类的Target属性指向的就是这个实例。举个例子: class Program { static void Main(string[] args) { X x = new X(); ProgressReporter p = x.InstanceProgress; p(1); Console.WriteLine(p.Target == x); // True Console.WriteLine(p.Method); // Void InstanceProgress(Int32) } static void WriteProgressToConsole(int percentComplete) { Console.WriteLine(percentComplete+"%"); } static void WriteProgressToFile(int percentComplete) { System.IO.File.AppendAllText("progress.txt", percentComplete + "%"); } } class X { public void InstanceProgress(int percentComplete) { /

FPGA之道(60)时空变换之空域优化

僤鯓⒐⒋嵵緔 提交于 2020-03-05 08:23:17
文章目录 前言 时空变换之空域优化 逻辑化简 资源合并 模块复用之分时复用 静态重构 动态重构 思路转换 前言 这是三月的第二篇博客,不得不说的是,有点儿怀念在实验室学习写博客的感觉(当然,并不怀念项目缠身,整日被催进度的噩梦日子),两个大屏幕,一台换了固态硬盘,因此还算流畅的台式电脑,简直不要太爽。平日里最讨厌用笔记本电脑,是因为觉得笔记本的键盘和鼠标很不人性化,这下好了,关键时期,笔记本成为了最依赖的东西,用笔记本打字也顺畅了,都是惯得。哈。当然最重要的还是学习氛围,在家是容易懒惰的,我宁愿打打游戏度日,也不愿坐在桌子前去思考一些复杂的问题,这是大脑惰性的选择。 好啦,这些日子也只能想想啦,也许这样的日子,哪怕一天也不会再有啦,我总是顾虑的,考虑到最坏的情况,疫情结束恐怕还是遥遥无期,毕竟学校不是一个随便开玩笑的地方,人口大量聚集,一起上课,一起吃饭,集体宿舍,这都给传染病提供了最好的传染途径,因此,疫情不结束,恐怕难以开学,更何况开学之后还有很多事情要处理,要么关乎毕业,要么。。。 进入正题,上篇博客是关于时域优化的内容, 回忆一下吧。 时域优化也就是对时序上的问题进行优化,例如我想更快的时钟去处理事件,而更快的时钟要求更精进的设计以及硬件条件要跟得上,假设硬件条件(FPGA)能跟得上,那么剩下的问题就是设计的问题了。 设计的问题,包括冗余的问题,这就需要对逻辑表达式进行化简

面向对象

杀马特。学长 韩版系。学妹 提交于 2020-03-04 10:24:25
面向对象 1、面向对象的理解   面向对象(Object Oriented)是一种程序设计的思想。   说面向对象之前,我们先来说说面向过程。来最经典的例子,把大象放进冰箱,1、打开冰箱。2、把大象放进去。3、关上冰箱。嗯,看着很合理,但是需要增加一些新的需求,比如大象放进冰箱以前先转个圈、放进去以后只关一半冰箱门、不放大象了放狮子等等一系列需求时,就需要把代码都捋一遍,再去改逻辑,这样的需求越来越多,那么代码就会越来越乱,难以维护。   于是就诞生了面向对象思想,一切皆对象。我们再用面向对象的思想去看上面的问题,可以拆成两个对象,大象和冰箱,冰箱负责开门关门,大象负责进冰箱,这样以后有新需求或者需求变更,我们只用关心具体的对象。   下面说一下面向对象的三个基本特征是:封装、继承、多态。 2、封装   通过上面的例子我们已经简单的用过封装了,将原本复杂混乱的逻辑,封装成一个个对象。每个对象只做自己的事情。再结合上面的例子,冰箱负责开门,你正常开也行,转个圈开也行,你最后只要把门打开就行;大象负责进冰箱,你跳着进走着进,最后你只要在冰箱里面就行。还有我们经常用的U盘,我们不用管它内部是怎么实现的,只需要用它提供的USB接口就行。   2.1 封装的理解   封装(Encapsulation)指一种实现细节部份包装、隐藏起来的方法。封装是为了防止对实现细节的访问

Java基础之static关键字的用法

无人久伴 提交于 2020-03-04 09:26:18
Java中的static关键字主要用于内存管理。我们可以应用static关键字在变量、方法、块和嵌套类中。 static关键字属于类,而不是类的实例。 静态(static)可以是: 变量(也称为类变量) 方法(也称为类方法) 代码块 嵌套类 修饰变量 被static修饰的变量称作静态变量或类变量;没有被static修饰的变量,称为实例变量。静态变量在内存中只有一个拷贝(节省内存),JVM只为静态变量分配一次内存,在类加载的过程中完成静态变量的内存分配(存储在“方法区”),可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,每创建一个类的实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 静态成员变量的初始化顺序按照定义的顺序进行初始化,static不可以修饰局部变量,即使静态方法里面也不可以有静态变量,同时也不能引用非静态方法,因为static修饰的变量或方法是在加载类的同时加载的,此时非静态的变量、方法等还未被加载,当然就无法引用了。但是,非静态方法或类却能正常引用静态变量或方法。因为非静态总是在静态之后出现的。 静态变量并不是所在类的某个具体对象所有,而是该类的所有对象所共有的,静态变量既能被对象调用,也能直接拿类来调用。所以一般在需要实现以下两个功能时使用静态变量:在多个对象之间共享时、方便访问变量时

JAVA static深入了解

我是研究僧i 提交于 2020-03-04 09:22:40
static关键字: 1)static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享; 2)只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 一、static变量 1、按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。 两者的区别是: 1)对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 2)对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 注:static成员变量的初始化顺序按照定义的顺序进行初始化,static不可以修饰局部变量。 2、所以一般在需要实现以下两个功能时使用静态变量: 1)在对象之间共享值时 2) 方便访问变量时 二、静态方法 1、静态方法的好处就是不用生成类的实例就能直接调用,可以这样理解使用static修饰的成员不再归对象所以,而是属于类 可以理解为是共有的,也就说只要通过类名就可以访问,不需要耗费资源反复创建对象

Java Static 深入理解

笑着哭i 提交于 2020-03-04 09:22:20
static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 需要了解jvm classloader 1、static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。 两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 static成员变量的初始化顺序按照定义的顺序进行初始化。static不可以修饰局部变量; 所以一般在需要实现以下两个功能时使用静态变量: 在对象之间共享值时 方便访问变量时 2、静态方法 静态方法的好处就是不用生成类的实例就能直接调用,可以这样理解使用static修饰的成员不再归对象所以,而是属于类 可以理解为是共有的,也就说只要通过类名就可以访问,不需要耗费资源反复创建对象

Java语法总结 - 内部类

萝らか妹 提交于 2020-03-04 07:56:57
从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论。其实任何优秀的语言特性用得不好就是滥用,内部类用得不好就会导致代码像迷宫一样,导致出现毫无重用的综合征。 1、内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。 几种内部类的共性: A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。 B、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。 2、成员内部类:形式如下 class Outer { class Inner{} } 编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。 成员内部类内不允许有任何静态声明!下面代码不能通过编译。 class Inner{ static int a = 10; } 能够访问成员内部类的唯一途径就是通过外部类的对象! A、从外部类的非静态方法中实例化内部类对象。 class Outer { private int i = 10 ; public void makeInner(){ Inner in = new Inner(); in.seeOuter(); } class Inner{ public void seeOuter(){ System.out

static 静态

喜夏-厌秋 提交于 2020-03-04 07:28:08
static 静态 特性 a) 与对象无关,与类有关 b) 在加载器有特殊操作(在执行main方法之前) 属性 a) 全类不管多少个属性,全类共享一个值→(类名.)的方法来访问 b) 常量属性直接设计为static c) 变量属性极少设计为static d) static 在加载期(运行之前),该属性即被产生,产生在内存的书籍段的静态期(普通属性是运行期执行到new 代码,产生在内存的堆期) e) 可以不产生对象 直接访问该属性 f) 凡是被new出来的都放在堆区 g) 局部变量在栈区 h) static 修饰的属性 →静态属性→类属性 i) 该属性与对象无关,全类共享一个值,所以很只有极少的变量属性能够被设计为static (真正判断出所有对象的值永远第一样) static修饰的方法----静态方法 ---类方法 a) 该方法与对象无关,只与类有关--static的方法不能访问本类的任何非static 的属性或者其他方法(因为他们全跟对象有关) b) 所以只有当这个方法的整个实现都跟对象身上的任何非static无关的时候,才能把该方法设计为static c) 即:工具类的工具方法才能设计为static 。 d) 在加载期 ,会优先加载static 的方法,后加载非static的方法---这个是static 不能调用非static得机制上的原因 构造方法不能用static 修饰

静态嵌套类

前提是你 提交于 2020-03-04 00:11:40
静态嵌套类 什么是静态嵌套类 就是成员内部类加上static修饰符。 静态嵌套类中的元素 1.实例变量 2.类变量 3.构造方法 4.实例方法 5.类方法 静态嵌套类中的方法访问其他的变量和方法 1.在静态嵌套类中构造方法和实例方法中访问静态嵌套类中的实例变量/实例方法,默认this.,可以省略this. 2.在静态嵌套类中构造方法和实例方法中访问静态嵌套类中的类变量/类方法,默认静态嵌套类类名.,也可以省略this.,可以省略静态嵌套类类名./this. 3.在静态嵌套类中类方法中不能访问静态嵌套类中的实例变量/实例方法。 4.在静态嵌套类中的类方法中访问静态嵌套类中的类变量/类方法,默认静态嵌套类类名.,可以省略静态嵌套类类名. 5.在静态嵌套类中的类方法中不能出现this. 6.在静态嵌套类中构造方法和实例方法/类方法可以访问构造方法,通过new访问。 静态嵌套类中访问外部类的变量和方法 1.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的实例变量/实例方法,只能通过外部类的对象访问 2.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的类变量/类方法,默认外部类的类名.,可以省略外部类的类名. 3.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的构造方法,通过new访问 外部类中访问静态嵌套类中的变量和方法 1.外部类中的构造方法/实例方法