下面来谈谈java编程中的一些语法:

1、什么是对象数组?

对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组。

对象数组的声明:

类名[]  对象数组名称  = new  类名[数组长度];
 class Person{
private String name ; // 姓名属性
public Person(String name){ // 通过构造方法设置内容
this.name = name ; // 为姓名赋值
}
public String getName(){
return this.name ; // 取得姓名
}
};
public class ObjectArrayDemo01{
public static void main(String args[]){
// 类名称 数组名称[] = new 类名称[长度]
Person per[] = new Person[] ; // 开辟了三个空间大小的数组
System.out.println("============== 数组声明 =================") ;
// 对象数组初始化之前,每一个元素都是默认值
for(int x=;x<per.length;x++){ // 循环输出
System.out.print(per[x] + "、") ; // 因为只是开辟好了空间,所以都是默认值
}
// 分别为数组中的每个元素初始化,每一个都是对象,都需要单独实例化
per[] = new Person("张三") ; // 实例化第一个元素
per[] = new Person("李四") ; // 实例化第二个元素
per[] = new Person("王五") ; // 实例化第三个元素
System.out.println("\n============== 对象实例化 =================") ;
for(int x=;x<per.length;x++){ // 循环输出
System.out.print(per[x].getName() + "、") ; // 此时,已经实例化完成了,所以会直接打印出姓名
}
}
}

使用对象数组可以实现多个对象的管理。

2、foreach与可变参数

1)、foreach循环(增强for循环)

  声明的方式:

  for(类型   变量名称:数组或集合){

//代码code

}

 class Person{

   public  static  void  main(String[] args){

      String []names={"马倩","小强","小明","俊明"}  //定义数组

      for(String name:names){
//遍历names,输出到name中
System.out.println(name);
} }
}

2)、可变参数:根据需要自动传人任意个数的参数。

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

可变参数的特点:

(1)、只能出现在参数列表的最后;

(2)、...位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

class Demo{

  public  static void main(String [] args){

   Demo  d=new Demo();

   d.print("xiaoming","wancai","xioaqiang","maotou");

   }

   public  static  void  print(String ...params){

      for(String  s:params){   //可变参数params

        System.out.println(s);

       }
} }

3、java中有很多设计模式,现在我们来说说单例设计模式。

单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点(保证一个类在内存中对象的唯一性)。

如何保证对象的唯一性呢?

1)、构造方法私有化(不允许其他的程序用new创造该类对象)

2)、声明一个本类对象(通过new关键字)

3)、给外部提供一个静态的方法获取对象实例。

如下:

class  TestDemo{

   private  TestDemo(){}   //构造方法私有化

   private  static  TestDemo  test=new  TestDemo();//声明一个本类对象

   public  static   TestDemo  getInstance(){

         return  test;
} //给外部提供一个静态方法 }

什么时候用到单例设计模式?

1)、通过在工具类的设计中使用

2)、当一个类中没有属性(对象的状态)

3)、该类作为工具类使用非常频繁。

单例设计模式下有两种实现方式:

1)、饿汗式

class  Single{   //类一加载,对象就已经存在,开发时常用这种

  private  static  Single s=new Singles();

  private  Single(){}

   public  static Single  getInstance(){

     return  s;

    }

}

2)、懒汉式:(面试时会用)

class  Single2{

//类加载进来没有对象,只有调用getInstance方法才会创造对象
private static Single2 s; private Single2(){} public static Single2 getInstance(){ if(s==null){ s=new Single2();
}
return s;
} }

在getInstance()方法中我们可以做一些判断来决定是否返回Single2的对象,实现了对单例对象的可控性。

java学习之面向对象(3)的更多相关文章

  1. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  2. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  3. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  4. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  5. java学习之面向对象概念

    思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...

  6. JAVA学习总结-面向对象

    前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ...

  7. Java学习(一)--面向对象(一)

    面向对象的思想一直指导者我们软件的分析.设计与开发.java语言是一种面向对象的语言.在学习java之前,先回想一以下向过程和面向对象. 一面向过程 面向过程主张按功能来划分系统需求.每一个功能都负责 ...

  8. Java学习: 面向对象的使用与注意事项

    面向对象的使用与注意事项 面向过程:当需要实现一个功能的时候,每一个具体的步骤都需要亲力,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做 ...

  9. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

  10. 程序设计基础·Java学习笔记·面向对象(上)

    Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...

随机推荐

  1. APP里如何添加本地文本

    首先考虑到用webview加载,那么久需要把文本转化成html的形势啊:如下,先把文字放到一个文本里,然后 文本转换H5: 1.在word中将文件格式布局 2.word中文本标题设为宋体标题,设字号, ...

  2. mac版本cornerstone的无限期破解方法【转】

    CornerStone是个人非常喜欢的mac上的一款SVN客户端工具,官方提供了14天的免费试用(trail)版本.我们可以在此基础上提供无限期试用版本. 方法一:如果你从来没有安装过这个trail版 ...

  3. xss漏洞修复,待完善

    1.防止sql注入 /// <summary> /// 分析用户请求是否正常 /// </summary> /// <param name="Str" ...

  4. PHP webservice的使用

    提到php的webservice.之前还是比较陌生的,因为接触的少呀,几乎在所有的公司中没用过,仅仅用过的一次好像是接入一个第三方的短信通道,用的是SOAP|WSDL. 一个很极端的话“webserv ...

  5. Breakpad Google的crash捕获、抓取开源库

    简介: Breadpad为google chrominum项目下用于处理dump的一套工具:内部采用跨平台方式实现捕获.生成.解析与平台无关的dump,便于统一处理:支持进程内与进程外捕获,当为进程外 ...

  6. 在WebStorm环境中给nodejs项目中添加packages

    照前文 http://www.cnblogs.com/wtang/articles/4133820.html  给电脑设置了WebStorm的IDE的nodejs开发环境.新建了个express的网站 ...

  7. 【iOS自定义键盘及键盘切换】详解

    [iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...

  8. 《UML大战需求分析》阅读随笔(三)

    一: 需求中提到的各种业务概念.人物等,经过抽象后都可以视之为类. 平时遇到的人.物,我们将遇到的都是具体的人.物,也就如程序中的对象,是一个实实在在的东西. 当我们分析需求的时候,设计模型的时候,我 ...

  9. LINUX 忘记root密码如何修改

    重启linux系统 3 秒之内要按一下回车,出现如下界面 然后输入e 在 第二行最后边输入 single,有一个空格.具体方法为按向下尖头移动到第二行,按"e"进入编辑模式 在后边 ...

  10. ASP.NET - 回滚事务

    SqlConnection con =new SqlConnection(ConnectionDb.conStr);//获取数据库连接 con.Open();//打开连接 SqlTransaction ...