黑马程序员--java 静态导入、可变参数、数据类型的自动拆箱与装箱、枚举_jilk的博客-程序员秘密

技术标签: java  import  android  integer  sun  设计模式  

---------------------- android培训java培训、期待与您交流! ----------------------


静态导入

import语句可以导入一个类或某个包中的所有类,所谓导入不占用任何的java资源,只是让我们写java原程序的时候少些一些前缀而已。
静态导入(java 1.5以后提供的)导入类中的静态方法,例如import static java.lang.Math.*,这样我们就可以直接使用:System.out.println(max(3,6));//max();方法可以直接使用了。

可变参数
只能出现在参数列表的最后;...位于变量类型和变量名之间 前后有无空格都行;调用可变参数的方法时,编译器可为该可变量参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
class VariableParameter
    {
        public static void main(String[] args)
         {
               System.out.println(add(2,3));
               System.out.println(add(2,3,5));
         }
    }
   public static int add(int x,int ... args)
   {
       int sum=x;
       for(int i=0;i<args.length;i++)
         {
              sum+=args[i];
         }
   }
 
增强for循环

for(type 变量名:集合变量名){...}
如上例:for(int arg: args)
           {
                sum+=arg;
           }
迭代变量必须在()定义;集合变量可以是数组或实现了Iterable接口的集合类

自动装箱与自动拆箱
class  AutoBox
{
   public static viod main(String[] args)
    {
      Integer iobj=3;/*自动把基本类型3装成了Integer类型,在赋给iobj(自动装箱)***在一个字节-128--127之内的数字,一旦包装成Integer对象是将它们缓存起
来,节省空间。因为数字小,出现的几率大,没必要每一个数字对应一个对象,这是一种设计模式,称为享元模式*/
            System.out.println(iobj+12);
            /*iobj是Integer类型,Integer不支持加法,它必须转换成基本类型整数才可以(自动拆箱)*/
 
              Integer i1=12;
              Integer i2=12;
            System.out.println(i1==i2); //true
              Integer i1=137;
              Integer i2=137;
            System.out.println(i1==i2); //false           
   }
}

 享元模式(flyweight):有很多个小的对象。它们有很多属性相同,把它们变成一个对象,那些不同的属性把它们变成方法的参数称为外部状态,相同属性称为内部状态;

枚举

使用枚举来规定某变量的值,也就是我们定义了一个新的类型并规定了它的值,以后使用该类型去定义变量时,变量的值就只能是那些已经规定好的值。而每一个枚举元素值都是一个实例对象。
***用抽象方法定义某些方法,就可以将大量的if else语句转移一个独立的实现了抽象方法的各个类中
枚举的定义及基本的使用:
public enum WeekDay{ 
/*枚举也是一个类,此处WeekDay就是一个类,其中的每一个元素都是它的实例对象。*/
              SUN,MON,TUE,WED,THI,FRI,SAT;
    }
    WeekDay weekDay2 = WeekDay.FRI; //静态的
           System.out.println(weekDay2);
           System.out.println(weekDay2.name());
           System.out.println(weekDay2.ordinal());
      //返回FRI在WeekDay取值中是第几个,从0开始算,应返回5.还有一个getClass方法,因为枚举为一个类,它的值为对象,若调用getClass()方法,应返回WeekDay。 
           System.out.println(WeekDay.valueOf("SUN").toString());
// WeekDay.valueOf("SUN"):将SUN变为WeekDay的实例对象。
           System.out.println(WeekDay.values().length);
/* WeekDay.values()返回一个WeekDay类型的数组,数组的值就是WeekDay所能取的值,也就是它的所有对象。便于进行遍历。*/
枚举中de构造方法使用:
public enum WeekDay{
              SUN(1),MON(),TUE,WED,THI,FRI,SAT;
/*元素列表为第一句,并且都是静态的,所以会自动调用相应的构造函数。只要用到该枚举其中的每个元素的构造方法就会被调用。元素后有大括号,并且其中有参数时,会调用有参的构造函数,否则会调用无参数的构造函数*/
              private WeekDay(){System.out.println("first");} //构造方法必须是私有的。
             private WeekDay(int day){System.out.println("second");}
}

带有抽象方法的枚举
public enum TrafficLamp{
   RED,GREEN,YELLOW;
   public abstract TrafficLamp nextLamp();

}

因为这个枚举中有抽象方法,所以不能用new来产生新的对象。只能用其子类来产生RED,GREEN,YELLOW等对象。
枚举只有一个成员时,就可以作为一种单例的实现方式。



 ---------------------- android培训java培训、期待与您交流! ----------------------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jilk315/article/details/6653347

智能推荐

SpringBoot集成kafka_springboot 有木有集成kafka 老是打印日子_黑尾土拨鼠的博客-程序员秘密

生产者1、pom文件中引入相关的包&amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.boot&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;artifactId&amp;amp;gt;spring-boot-starter-web&amp;amp;lt;/artifactId&amp;amp;gt; &amp;amp;lt;/dep

PHP链接数据库报错 php_network_getaddresses: getaddrinfo failed: Name or service not known_天下皆白_唯我独黑的博客-程序员秘密

报错问题:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known使用环境:thinkphp框架,linux,阿里云rds数据库ping 链接地址正常:报错过程:访问后台地址,多数为正常访问,刷新10-20次可能会出现1-2次报错,并非持续报错...

我们如何获取信息,组织知识_少楠 Plidezus的博客-程序员秘密

前言:近日在研究 RoamRearch 的时候,发现他们的白皮书和创始人的一系列关于信息获取和组织知识的思考蛮有趣,加上最近也在重构自己的知识库有所思考,所以结合其部分观点,谈谈对于信息...

Java50道经典编程题:(十九)菱形的打印 ——寻找规律解决问题_Oceanst_God的博客-程序员秘密

1.问题重述题目:打印出菱形(固定输出和根据键盘读入的信息输出)2.解析先把图形分成两部分来看待,前四行一个规律,后三行一个规律;设i表示行,j表示列先写一个say方法,输入行数时,可以返回该行有多少列则前四行的规律为:当i+j的和小于5时,则输出一个空格,其余位置均为*后三行的规律:当(i-4)&amp;lt;=j时,则输出一个空格,其余位置为*3.解决问题代码如下:灵活打印imp...

STM32F103学习笔记——仿真波形_pietyknight的博客-程序员秘密

近日,在使用 Keil5 MDK 对STM32进行仿真的时候,无法查看IO端口的信号波形。在网络上搜索了一番,才搞明白原因:一是没有选中【设置】选项中的【仿真器(simulator)】;二是【Debug】中的参数设置有问题。现将有关设置记录如下:第一步,在工程选项中,找到【debug】选项卡,左上方,一定要选中【use simulator】;第二步,在下方的参数设置中,一定要修改四个参数,即第2步和

vue实现可编辑的elementui表格_TVM的博客-程序员秘密

以上为效果图以下为代码&lt;el-table :data="firstTagList" stripe :header-cell-style="{ background: '#eef1f6', color: '#606266' }" @cell-click="getSecondTag" &gt; &lt;el-table-column header-a...

随便推点

excel表格换行快捷键_excel常用快捷键分享_weixin_39524959的博客-程序员秘密

关于Excel,你需要一些快捷键 1、Ctrl + A 全选表格 2、Ctrl + B 粗体字3、Ctrl + C 复制4、Ctrl + D 向下填充,可以隔行5、Ctrl + E 快速填充6、Ctrl + F 查找7、Ctrl + G 定位8、Ctrl + H 替换9、Ctrl + i 斜体字10、Ctr...

python分解质因数例题,【Python】【demo实验17】【练习实例】【将一个正整数分解质因数】..._小仙女CiCi的博客-程序员秘密

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。我的源代码:#!/usr/bin/python# encoding=utf-8# -*- coding: UTF-8 -*-# 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。a = int(input("please input the number:\n"))b = a# a 的因数集合la = []...

Java 关系运算符_weixin_30662011的博客-程序员秘密

返回值是 Boolean, 一般用于判断语句当中==!=&gt;&lt;&gt;=&lt;=转载于:https://www.cnblogs.com/hello-dummy/p/9161748.html

BUUCTF PWN题刷题记录 (未完待续)_ez_pz_hackover_2016_pipixia233333的博客-程序员秘密

最近找了一个新的CTF比赛平台 但是不知道为啥pwn的服务器总是连不上, 所以到时候还是直接本地打 默认2.23 so 如果 有高版本的话 我再切换,,, 逆向的话 先等等吧,,,先不刷。。等有空了再刷第一题 连上就有flag的pwn直接 运行就有权限,。第二题 RIP覆盖一下这个没有任何保护 直接 覆盖rip就可以了from pwn import *conte...

Trie 树及其简单应用_trie树构建快速查询ac tree_Smile_7x的博客-程序员秘密

Trie树       Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理    利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。    下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩子结点,因为总共有26个英文字母(假设单词都是小写字母组成)。

推荐文章

热门文章

相关标签