static

Java SE学习总结 Day (9)

雨燕双飞 提交于 2020-02-07 00:30:28
Day 09开篇: " 今天java基础主要学习了面向对象的匿名对象,封装,this关键字,stastic关键字,public static void main(String []args){}每个关键字的作用 等。 " 知识点反馈: 今天的知识点和每周总结思维导图 一.匿名对象: 1. 概念: 就是没有名字的实体,也就是说这个这个实体只存在了堆内存地址,并没有栈空间(就是没有名字的对象) 2. 匿名对象的用途: (1)当对象对方法只进行一次调用的时候,可以使用匿名对象进行简化 (为什么?因为匿名对象没有栈空间,所以只能使用一次,第二次使用一定会产生新的空间出来,如果你的方法被多次调用,且要求使用 的是同一个对象的时候,匿名就不合适了,他只适合这个对象一次性使用的时候。) (2)可以作为实际参数进行传递或者返回(前提是你对于这个对象的使用度只有一次的时候) 3. 匿名对象的好处: (1) 使用完毕就是垃圾,等着GC来回收 (2) 语法简洁,不需要创建对象 4. 匿名对象的缺点: 就是一次性使用的 二.封装: 1. 概念: 隐藏内部实现细节,提供对外的公共访问方式;一般来说,一个即将被作为对象的类,它里面所有的属性都应该是被私有化的。 2. 封装好处: (1)隐藏了内部实现细节 (2)提高了代码的安全性 (3)相对来说,简化了代码检验程度 3.private关键字:

设计模式之单例模式

心不动则不痛 提交于 2020-02-06 18:06:16
1.单例模式简介 单例模式,就是采取一定的方法保证在整个的软件系统中,对某一个类只存在一个对象实例,并且该类只提供一个取得其对象的方法。 2.单例模式的实现方法 单例模式的实现方法分为8种,主要分为: 1.饿汉式(静态常量)(√) 2.饿汉式(静态代码块)(√) 3.懒汉式(线程不安全) 4.懒汉式(线程安全,同步方法) 5.懒汉式(线程安全,同步代码块) 6.双重检查(√) 7.静态内部类(√) 8.枚举类(√) 2.1: 饿汉式(静态常量) 核心代码 : private static SingletonByStatic instance = new SingletonByStatic(); 优点 :简单,在类装载的时候已经完成了实例化,避免了线程同步 缺点 :在类装载的时候就完成实例化,没有达到 lazyloading(懒加载),如果从始至终没有使用过这个实例,则会造成内存的浪费 。导致类装载的原因可能有很多种,这时候万一初始化了instance,未使用。造成了内存的浪费 完整代码: package com.liz.GOF23.singleton.hungry_man; //饿汉式(静态变量) //优点: 简单,在类装载的时候已经完成了实例化,避免了线程同步 //缺点: 在类装载的时候就完成实例化,没有达到 lazyloading(懒加载),如果从始至终没有使用过这个实例

TraceView

喜欢而已 提交于 2020-02-06 14:22:39
Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 Traceview的使用:首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件我们才可以将其转化为图形。 一、启动Trace //使用Debug的以下静态方法方法来启动://使用指定trace文件的名字和默认最大容量(8M)的方式开始方法的追踪static void startMethodTracing(String traceName)//使用默认trace文件的名字(dmtrace.trace)和默认最大容量(8M)的方式开始方法的追踪static void startMethodTracing()//使用指定trace文件的名字和最大容量的方式开始方法的追踪。并可指定flags.注:int flags好像没意义。一般都用0.static void startMethodTracing(String traceName, int bufferSize, int flags)//使用指定trace文件的名字和最大容量的方式开始方法的追踪。static void startMethodTracing(String traceName, int bufferSize) 注1:以上的方法的文件都会创建于SD卡下

Java包装类中的缓存

浪子不回头ぞ 提交于 2020-02-06 14:05:38
缓存 包装类为了提高性能,会将最常用范围的基本数值对应的包装类进行缓存,通常使用 cache 内部类的 static 静态代码块进行缓存填充操作, valueOf() 中存在缓存读取操作。我们通常定义包装类型时 Integer a = 1 ,其默认就是使用的 valueOf() 方法,可自行通过 javap 进行反编译查看。 Integer a = 1 ; Long b = 2 l ; Character c = 'a' ; javac 编译, javap -c 反编译 public static void main ( java . lang . String [ ] ) ; Code : 0 : iconst_1 1 : invokestatic # 4 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 4 : astore_1 5 : ldc2_w # 5 // long 2l 8 : invokestatic # 7 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; 11 : astore_2 12 : bipush 97 14 : invokestatic # 8 // Method java/lang/Character.valueOf:(C

用rust写一个玩具解释器3

我们两清 提交于 2020-02-06 12:49:42
项目目录 项目地址 画质有点渣 其实不应该创建太多的包,因为里面其实只有一个有效文件(mod.rs和test.rs算是辅助) . 所以说目录可以更简单一些. token 在上文中提到了把token看为字符串, 而其大致分为两种. 我们预先定义的 比如 +,-,*,/,if,return,fn和let等 留给用户的 比如: 变量名,整数 //token/token.rs //不想下载第三方包, 所以这样子是一个可接受的选择 use std : : collections : : HashMap ; pub fn lookup_ident ( ident : & String ) -> TokenType { let mmap : HashMap < String , TokenType > = { let mut map = HashMap : : new ( ) ; map . insert ( "fn" . to_string ( ) , FUNCTION ) ; map . insert ( "let" . to_string ( ) , LET ) ; map . insert ( "true" . to_string ( ) , TRUE ) ; map . insert ( "false" . to_string ( ) , FALSE ) ; map . insert

hive表中使用testfile格式保存时,常用的字段分隔符

浪尽此生 提交于 2020-02-06 10:37:32
public static final String SPLIT_SEPATATOR = "\u0001"; public static final String TAB_SPLIT_SEPARATOR = "\t"; public static final String COMMA_SPLIT_SEPARATOR = ","; public static final String TOSTRING_SEPARATOR = "\u0001"; public static final String COLLECTION_SEPARATOR = "\u0002"; public static final String NULL_STRING = "\\N"; 来源: CSDN 作者: qq_43193797 链接: https://blog.csdn.net/qq_43193797/article/details/103746159

Snowflake雪花算法(2)

半城伤御伤魂 提交于 2020-02-06 08:59:20
package com.black.uuid.util; /** * snowflake雪花算法 * * @author Black * @date 2019年7月6日 下午4:15:11 * @version 0.1.0 * @copyright black.cn */ public class SnowflakeUtil { /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ private final static long SEQUENCE_BIT = 12; // 序列号占用的位数 private final static long MACHINE_BIT = 5; // 机器标识占用的位数 private final static long DATACENTER_BIT = 5;// 数据中心占用的位数 /** * 每一部分的最大值 */ private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT); private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);

为什么定义在类中的私有变量在main中不能用?

半世苍凉 提交于 2020-02-06 08:49:45
因为main是static修饰的静态方法,只能访问静态变量,所以你可以用static修饰变量a, main方法是程序的入口,在此入口之前不会产生任何对象,所以如果main方法是非static的成员方法,jvm是无法调用的,就进不了入口,那么程序也无法运行。而static的main方法可以不需要产生对象而调用。 来源: CSDN 作者: jsxuw0612 链接: https://blog.csdn.net/weixin_45744265/article/details/103653827

C++中static内部链接和extern外部链接

痴心易碎 提交于 2020-02-06 05:37:31
我们在进行多文件编译时,会遇到在不同文件中存在同名变量的问题,但是相同变量存在两种情况: 1、两个文件中的同名变量实际上是相同的变量 2、两个文件中的同名变量实际上是不同的变量 对于第一种情况,实际上相同的意思是两个变量的地址也一样,就是相同的变量,但是声明在不同的文件中而已。对于这种情况,我们C++引入了 extern 关键字 extern //file1.cpp # include <iostream> using namespace std ; int count = 10 ; void printing ( ) ; int main ( ) { count ++ ; printing ( ) ; } file1.cpp 中定义了一个全局变量 count ,并且在 main 函数中进行自增运算。 //file2.cpp # include <iostream> using namespace std ; extern int count ; void printing ( ) { cout << count ; } file2.cpp 中声明了一个 外部链接 extern 同名变量,是的可以在 file2.cpp 中使用该变量,实际上这两个变量是同一个变量。 编译两个文件,输出 count 自增之后的数值! PS D:\程序\随笔程序\2020年1月 > g++ file1

java作业3

江枫思渺然 提交于 2020-02-06 05:34:24
(一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。 封装性就是将不愿意让其他人看见的属性封装起来,用setter方法和getter方法进行访问和修改。 class person{ private int age; public void setterAge(){ if(age>0&&age<150) this.age=age; } public int getterAge(){ return this.age; } } 2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。 class A{ private int secret = 5; } public class Test{ public static void main(String args[]){ A a = new A(); System.out.println(a.secret++); } } 不能通过编译,因为A类中的属性用private封装,不能直接访问和修改。 public class Test{ int x = 50; static int y = 200; public static void method(){ System.out.println(x+y); } public static void main(String args[]){ Test.method