static

构造函数

旧时模样 提交于 2020-03-10 09:51:43
构造函数的一些知识点 1.在Java中,下列对于构造函数的描述正确的是? A.类必须显示已定义构造函数. B.构造函数的返回值是void. C.构造函数和类具有相同的名称,并且不能带任何参数. D.一个类可以定义多个构造函数. 答案:D 解析:A: 无参构造函数可以不显示。 B: 构造函数没有任何返回值类型,即使是void类型也没有。 C: 有参构造函数可以携带参数。 构造函数在创建类对象的时候被自动调用 Java中的所有异常都继承自Throwable Throwable:被用来表示任何可以作为异常被抛出的类。有两个重要的子类Exception和Error。二者都是Java异常处理的重要子类,并且二者也包含许多重要的子类。 Error:该类层次结构描述了Java运行时系统内部错误和资源耗尽错误,总之是与Java虚拟机有关的运行错误。也是应用程序无法处理的。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。一般不需要你关心。 Exception: 是程序本身可以处理的异常,是需要程序员关心的异常类。 Java中的异常又可分为可检查异常(checked exceptions)和不可检查异常

编译器常量与运行期常量的区别与数组创建本质分析

不羁的心 提交于 2020-03-09 12:12:44
运行期常量编译器无法确定 /* * Copyright (c) 2019 maoyan.com * All rights reserved. * */ import java . util . UUID ; /** * 当一个常量的值并非编译器可以确定的时候,那么其值就不会放到调用类的常量池里 * 这个时候程序运行的时候,会导致主动使用这个常量所在的类,显然会导致这个类被初始化 * * @author wangkai * @created 2019/12/27 */ public class MyTest2 { public static void main ( String [ ] args ) { System . out . println ( MyParent2 . str ) ; } } class MyParent2 { public static final String str = UUID . randomUUID ( ) . toString ( ) ; static { System . out . println ( "MyPatents static code" ) ; } } 数组创建本质 /* * Copyright (c) 2019 maoyan.com * All rights reserved. * */ /** * * 对于数组实例来说

java.util.Arrays,java.lang.Math,java.lang.System 类的常用方法汇总

笑着哭i 提交于 2020-03-09 07:45:50
java.util.Arrays类是数组的工具类,一般数组常用的方法包括 二分查找:public static int binarySearch(array[],int key),返回key的下标index 扩容缩容:public static int[] copyOf(array[],newLength),返回新数组 取部分:public static int[] copyOfRange(array[],fromindex,toindex) ,注意[from,to)是开区间,返回新数组 数组从小到大快速排序:public static void Arrays.sort(array[]), 整体赋值:public static void fill(array[],value), 输出为字符串:public static String toString(array[]),返回字符串 检查是否相等:public static boolean equals(array1[],array2[]),返回布尔值 java.lang.Math类是常用的数学类,常用的方法有: 取绝对值:public static int abs(int value),返回绝对值 向上取整:public static int ceil(double value), 向下取整:public static int

充分利用缓存来提高网站性能

冷暖自知 提交于 2020-03-09 07:12:12
[原文作者]: Omar [原文链接]: Making best use of cache for high performance website 使用URLs时要确保一致性 浏览器基于URL来缓存资源。当URL改变后,浏览器从源服务器获该资源的新的版本。查询字符串参数的改变也被视为URL的改变。例如,"/default.aspx" 被缓存到浏览器,如果你请求了"/default.aspx?123",浏览器将从服务器获取新的版本。对于这个新URL的响应,如果你返回的是正确的缓存报头,它仍然会被缓存。这样的话,再把查询字符串改成类似于"/default.aspx?456”,那么服务器将又返回一个新的版本。因此,当你想响应得到缓存时,就要确保你在各处使用了一致性的URL。在主页里,如果你请求了一个URL为"/welcome.gif"的文件,那么确保在其他页面里在请求该文件时也使用相同的URL。常见的一个错误是,有时会从URL中省略"www"子域。 www.pageflakes.com/default.aspx 与pageflakes.com/default.aspx是不同的,两者会被分别的缓存。 静态内容会被缓存得更久 静态内容可以被缓存得更久,例如一个月。 如果你正考虑应该只缓存几天,以便当你修改文件后,用户可以很快获取到新的版本,那么你错了。如果一个文件是通过设置过期报头

java1.8 ConcurrentHashMap 详细理解

依然范特西╮ 提交于 2020-03-09 06:28:42
基于 jdk1.8 Java并发包中提供的一个线程安全且高效的HashMap实现,可以完全替代HashTable,在并发编程的场景中使用频率非常之高。 可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping) 实现原理 1.8之前ConcurrentHashMap是使用Segment段来进行,一个段就相当于一个HashMap的数据结构,每个段使用一个锁 1.8之后Segment虽保留,但已经简化属性,仅仅是为了兼容旧版本,使用和HashMap一样的数据结构每个数组位置使用一个锁 再学习中始终要考虑多线程的情况 一.类加载 主要知道以下的一些初始化值 private static final int MAXIMUM_CAPACITY = 1 << 30; //数组最大大小 同HashMap private static final int DEFAULT_CAPACITY = 16;//数组默认大小 static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; private static final int DEFAULT_CONCURRENCY_LEVEL = 16; //兼容旧版保留的值,默认线程并发度,类似信号量 private static final float

c++面向对象高级编程 学习四 静态、类模板、函数模板

断了今生、忘了曾经 提交于 2020-03-09 00:42:34
静态static:静态数据和静态函数,在内存中只有一份,不会随着创建对象的数目的增加而增加 static数据 :比如银行的account类中,账户名是普通数据,100个对象会有100个账户名,但利率都是相同的,因此利率可以设置为static static函数 :static函数和其他一般成员函数相比,static函数没有this指针,因此它不能处理类中的一般数据,只能处理static数据 static数据,需要在类外面进行定义。 调用static函数的两种方式:(1)通过object调用(2)通过class name调用 class Account { public : static double m_rate ; //声明 static void set_rate ( const double & x ) { m_rate = x ; } } ; double Account :: m_rate = 8.0 ; //定义 int main ( ) { Account :: set_rate ( 5.0 ) ; //通过class name调用 Account a ; a . set_rate ( 7.0 ) ; //通过object调用 } 单例模式的例子: class A { public : static A & getInstance ( ) ; setup ( ) { .

JAVA-方法

心不动则不痛 提交于 2020-03-08 22:19:28
1.定义: 具有实现特定功能的函数 2.方法的声明: 修饰符+返回数据类型+方法名(形式参数类型 参数名1,参数类型 参数名2...) 3.方法的调用: 同一个类的一个方法调用另外一个方法时,如果被调用的方法是普通方法(没有被static修饰),则默认使用this作为调用者,;如果被调方法时静态方法,则默认使用类作为调用者。且这两个调用者都可以被省略。所以表面上看起来某些方法是独立调用的,但实际上还是隐式的使用this或者类作为调用者。 3.java中方法的所属性体现在: 1)方法不能单独使用,只能被类或者对象调用 2)方法不能单独存在,只能定义在类体中 2)被static修饰的方法,叫做静态方法,表示该方法属于这个类,既可以被该类调用,也可以被该类的实例调用;没有被static修饰的方法,叫做普通方法,只能被该类的实例调用 4.方法的参数传递:值传递 1)当形式参数为基本数据类型时,形参的改变不影响实际参数的改变 public class MethodTest08 { public static void main(String[] args) { int a=8; int b=9; change(a,b); System.out.println("main方法中的a="+a+",b="+b); } // 定义一个方法,用来交换a和b的值 public static void

java 基础 --- static 本质

坚强是说给别人听的谎言 提交于 2020-03-08 20:41:20
java 基础 --- static 本质 今天遇到了 Static ,想深入了解一下 Static 的具体作用。 一, 静态成员变量和静态方法 Static 是一个用于修饰成员变量和方法的,被其修饰的成员变量/方法被称作静态成员变量/静态成员方法 ,也叫做类变量。既然是被这个关键字修饰,那么注定静态成员变量/方法与普通的成员变量/方法是有区别的。 静态与非静态的区别: 1.static 修饰的成员变量和方法,从属于类。普通变量和方法,从属于对象的。 2.静态修饰的变量/方法的生命周期和类相同,在整个应用程序执行期间都有效。普通成员变量/方法只有在类创建对象后才开始存在的,对象被销毁,他也会被销毁。 3.静态变量/方法可以使用“类名.静态成员”的形式进行调用。非静态变量/方法必须用“对象.变量”来调用。 4.静态变量是全类共享的,普通变量是每个对象单独使用的。 5.在静态方法中不可以使用 this 关键字。 6.在静态方法中不可以直接调用非静态方法 7.在 java 中规定,不能将方法体内的局部变量声明为 static。 二,静态代码块 在类中,用 static 声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。 构造方法用于对象的初始化,静态初始化块用于类的初始化操作。在静态初始化块中,不能直接访问非 static 成员。

C —— 存储类

▼魔方 西西 提交于 2020-03-08 16:44:12
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。 auto auto 存储类是所有局部变量默认的存储类。也就是说 int number = 10; 等价于 auto int number = 10; auto 只能用在函数内,即 auto 只能修饰局部变量。 register register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 ‘register’ 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。例如: register int number = 10 ; static static 修饰符可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中。例如: # include <stdio.h> static int STATIC_NUMBER = 27 ; int main ( ) { printf ( "static int

线程池源码-伟大而渺小的ctl

落爺英雄遲暮 提交于 2020-03-08 10:58:14
最近看到有些博客提到线程池需要掌握的问题清单,发现自己很多地方是是一知半解的状态,正好借此机会,带着问题去回顾了一波 Java 线程池的源码。 ctl 为何物? 线程池的运作过程对状态的检查非常严格,几乎是走两步一个检查,检查线程池的状态,有效线程的数目,而它们都是基于一个整型变量来实现的,它的「身子」也许很单薄,但是肩上的责任重大。 // 本质是 Integer 型变量,进行了原子性的封装 private final AtomicInteger ctl = new AtomicInteger ( ctlOf ( RUNNING , 0 ) ) ; 一饰两角 大家可能会想,一个变量怎么能够同时表示两个状态,我当时也非常疑惑,这里就要提到一个巧妙的设计——高低位表示法(名字是我瞎掰的)。 1.紧随在 ctl 变量后面被初始化的两个变量 private static final int COUNT_BITS = Integer . SIZE - 3 ; private static final int CAPACITY = ( 1 << COUNT_BITS ) - 1 ; COUNT_BITS 的值为 29(整型 32 位); CAPACITY = 1 << 29 表示将 1 往左移动了 29 位,换算之后就是 1 * 2 的 29 次方,高 3 位被空出来了,而低 29 位用来表示