Java面向对象 Main函数 静态的应用与单例设计模式

知识概要

            (1)Main函数的细解

(2)静态的应用,静态变量,静态代码块,静态函数

(3)单例设计模式

1.Main函数的细解

           
                public static void main(String[] args)

主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。

主函数的定义:
     public:代表着该函数访问权限是最大的。
     static:代表主函数随着类的加载就已经存在了。
     void:主函数没有具体的返回值。
     main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
    (String[] args):函数的参数,参数类型是一个String数组,该数组中的元素是字符串。字符串类型的数组。

主函数是固定格式的:jvm识别。

jvm在调用主函数时,传入的是new String[0];

将main函数中传入的字符串依次打印出来。

class MainDemo
{public static void main(String[] args)//new String[]{String[] arr = {"hah","hhe","heihei","xixi","hiahia"};MainTest.main(arr);}
}//String[] args = new String[3];
//String[] args = null;class MainTest
{public static void main(String[] args){for(int x=0; x<args.length; x++)System.out.println(args[x]);}
}

2.什么使用静态?

静态:static。

用法:是一个修饰符,用于修饰成员(成员变量,成员函数).
当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,
还可以直接被类名调用。类名.静态成员。

static特点:
1,随着类的加载而加载。
   也就说:静态会随着类的消失而消失。说明它的生命周期最长。

2,优先于的对象存在
明确一点:静态是先存在。对象是后存在的。

3,被所有对象所共享
4,可以直接被类名所调用。

实例变量和类变量的区别:
1,存放位置。
 类变量随着类的加载而存在于方法区中。
 实例变量随着对象的建立而存在于堆内存中。
2,生命周期:
 类变量生命周期最长,随着类的消失而消失。
 实例变量生命周期随着对象的消失而消失。

静态使用注意事项:
1,静态方法只能访问静态成员。
 非静态方法既可以访问静态也可以访问非静态。
2,静态方法中不可以定义this,super关键字。
 因为静态优先于对象存在。所以静态方法中不可以出现this。
3,主函数是静态的。

静态有利有弊
利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。
 可以直接被类名调用。
弊端:生命周期过长。访问出现局限性。(静态虽好,只能访问静态。)

因为静态修饰的内容有成员变量和函数。
  什么时候定义静态变量(类变量)呢?
  当对象中出现共享数据时,该数据被静态所修饰。
  对象中的特有数据要定义成非静态存在于堆内存中。

什么时候定义静态函数呢?

当功能内部没有访问到肺静态数据(对象的特有数据),
  那么该功能可以定义成静态的。

static特点:
  1,随着类的加载而加载。
  也就说:静态会随着类的消失而消失。说明它的生命周期最长。

2,优先于的对象存在
  明确一点:静态是先存在。对象是后存在的。

3,被所有对象所共享
  4,可以直接被类名所调用。

class Person
{String name;static String country = "cn";public  static void show(){System.out.println(contry+"haha");   }}class
{public static void main(String[] args) {Person p = new Person();p.show();//Person .show();}}

静态代码块------示例

/*
静态代码块。
格式:
static
{静态代码块中的执行语句。
}特点:随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。*/class StaticCode
{   int num = 9;StaticCode(){System.out.println("b");}static{System.out.println("a");}{System.out.println("c"+this.num);}StaticCode(int x){System.out.println("d");}public static void show(){System.out.println("show run");}
}class StaticCodeDemo
{static{System.out.println("b");}public static void main(String[] args) {new StaticCode(4);}static{System.out.println("c");}
}

 单例设计模式: 懒汉式  饿汉式

设计模式:解决某一类问题最行之有效的方法。
java中23种设计模式:
单例设计模式:解决一个类在内存只存在一个对象。

想要保证对象唯一。
1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象
2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

这三部怎么用代码体现呢?
1,将构造函数私有化。
2,在类中创建一个本类对象。
3,提供一个方法可以获取到该对象。

对于事物该怎么描述,还怎么描述。
当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。

<strong>/*
这个是先初始化对象。
称为:饿汉式。Single类一进内存,就已经创建好了对象。
class Single
{private static Single s = new Single();private Single(){}public static Single getInstance(){return s;}
}
*///对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。
//Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
class Single
{private static Single s = null;private Single(){}public static Single getInstance(){if(s==null){synchronized(Single.class){             if(s==null)s = new Single();}}return s;}
}//记录原则:定义单例,建议使用饿汉式。class
{public static void main(String[] args) {System.out.println("Hello World!");}
}
</strong>


转载于:https://www.cnblogs.com/thankyou/p/4352173.html

Java面向对象 Main函数 静态的应用 单例设计模式相关推荐

  1. java day07第七课静态的和单例设计模式

    静态的(static)和单例模式 main函数 主函数是一个特殊的函数,作为程序的入口,可以被jvm调用 主函数的定义 public 表示该函数的访问权限是最大的. static 代表主函数随着类的加 ...

  2. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式

    学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...

  3. java单例设计模式之懒汉式和饿汉式

    单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法. 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的 ...

  4. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  5. Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字

    目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...

  6. java main 方法不能执行,AndroidStudio无法执行Java的main函数

    AndroidStudio无法执行Java的main函数 AndroidStudio无法执行Java的main函数 FAILURE: Build failed with an exception. * ...

  7. java中main()函数的返回值是什么_Java中main()函数的返回值类型是什么

    Java中main()函数的返回值类型是什么 答:void 在单纯形表的终表中,若非基变量的检验数有0,那么最优解 答:无穷多 中国大学MOOC: 不属于现代区位理论的是( ) 答:中心地理论 不属于 ...

  8. JavaSE面向对象:继承、多态、Super、Object类、重写、static、final、静态成员、懒汉式、饿汉式、单例设计模式、初始化块、抽象类、抽象方法、接口

    感谢尚硅谷免费提供的视频 继承 ** 理解 ** 生活中的继承:子女继承了父母的财产或相貌或才华 java中的继承:一个类不用自己定义属性或方法,就已经具备了另一个类的属性和方法 把这种现象称为jav ...

  9. 【Java】day9--main方法、单例设计模式、继承、方法重写部分知识点总结

    (一)main方法 jvm调用main方法,jvm也是一个程序     main方法详解:         public:公共  保证该类在任何情况下,jvm都对其方法可见.         stat ...

  10. java 单例内部类_9 java的关键字static、单例设计模式、初始化块、关键字final、抽象类、接口、内部类...

    static关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时 ...

最新文章

  1. python查看包的安装路径_查看python包的安装路径,检查安装路径设置。Python包的Python来自,从中,检测...
  2. 如何将一键还原精灵备份文件复制出来?
  3. 浏览器中xhr选项是做什么用的呢_XHR和AJAX终于搞懂了!!
  4. pyrealsense2 sensor.get_supported_options()(获取当前sensor支持的参数)
  5. Python学习笔记__4.1章 高阶函数
  6. java poi 设置标题_poi生成Word时指定文本样式,如“正文”,“标题1”,“标题2”等...
  7. 【软件质量】对this或字符串加锁的弊病
  8. VS2013(InstallShield2015LimitedEdition)打包程序详解
  9. 本科阶段计算机专业的科学体系,【学习方法】一位大三本科生的计算机科学与技术学习反思录...
  10. PaddlePaddle(8)—— 如何写好一篇高质量的精选项目
  11. RAC架构之业务分割
  12. Source Code Pro一款堪称完美的编程字体
  13. 冰点下载器的使用方法
  14. 电子设计教程33:RC桥式正弦波振荡电路
  15. AI语音技术的架构(学习心得)
  16. “但问耕耘,莫问收获”才有机会“碰运气”——新书《成功与运气:好运和精英社会的神话》解读
  17. CVTE实习求职经历
  18. 视频添加背景音乐ffmpeg(十八)
  19. 群晖docker中安装VS code
  20. 企业怎么管理多个邮箱?如何高效地管理邮件?

热门文章

  1. Centos7 防火墙常用配置
  2. Java面试题超详细讲解系列之六【网络协议篇】
  3. SqlServer 2008R2修改表结构提示“不允许保存更改”解决方案
  4. mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)
  5. 使用计算机打印汉子文档,电子科技大学《计算机应用基础(本科)》20春期末考试【标准答案】...
  6. Leetcode刷题、常用算法汇总(Java版本)
  7. 实战React:ToDoList
  8. jQuery特效:动画实现闪烁效果
  9. linux zmq编译pgm,czmq交叉编译
  10. Java:对于Borderlayout布局管理的理解