构造函数:(当类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数)

格式:

class Person

{

  Person(){} //空参数

}

1.函数名与类名相同,

2,不定义返回值类型,即不能写return语句.

作用:给对象进行初始化.

与一般函数的区别:

1.构造函数 只执行一次,其他函数可以被执行多次.

构造代码块:

构造代码块,给对象进行初始化,对象一建立就运行,且优先于构造函数

与构造函数的区别:

相同点是,都是给对象进行初始化使用的.

构造代码块是给所有对象进行初始化的,而构造函数是给对应的对象进行初始化.

构造代码块中定义的是不同对象的共性的初始化内容.
格式:

例如:
 {
  System.out.println("构造代码块!");
 }

this关键字:

作用:用于区别成员变量与局部变量 同名的情况.

例如:

class Person{

String name; //--->成员变量name.

Person(String name) //--->局部变量ame.

{

  this.name=name;  // this.name  ===>中的name指的就是成员变量的name.

  name = name; //如果这样定义,这两个name都是局部变量name.

}

}

this代表它所在类的所属对象的引用,

通俗来讲:即哪个函数调用this所在的函数,this就代表哪个对象.

有关this关键字,构造函数和构造代码块的相关代码演示.

 class Person
{
private int age;
private String name ;
/*
构造代码块,给对象进行初始化,对象一建立就运行,且优先于构造函数.
与构造函数的区别:构造代码块是给所有对象进行初始化的,而构造函数是给对应的对象进行初始化.
构造代码块中定义的是不同对象的共性的初始化内容.
*/
{
System.out.println("构造代码块!");
cry();
}
//构造函数
Person()
{
System.out.println("A: name = "+name+" age = "+age);
//cry();
}
/*this: 关键字
作用:用于区别成员变量与局部变量同名的情况.
this代表它所在类的所属对象的引用,即哪个函数调用this所在的函数,this就代表哪个对象.
*/
Person(int age)
{
this.age = age;
System.out.println("B: name = "+name+" age = "+age);
//cry();
}
Person(int age ,String name)
{
this.age = age;
this.name = name;
System.out.println("C: name = "+this.name+" age = "+this.age);
//cry();
} /*
this的应用:定义一个函数,比较两个人年龄是否相同.
*/
public boolean compare(Person p)
{
return this.age == p.age; //this.age中的this代表的是调用这个函数的对象. ===>77行中的对象p4调用了compare函数,this就是代表的p4.
} //设置名字的函数
public void setName(String name)
{
this.name = name;
}
//获取名字的函数
public String getName()
{
return name;
} public void cry()
{
System.out.println("Cry--------!");
}
} class PersonDemo2
{
public static void main(String args [])
{
Person p1 = new Person();
Person p2 = new Person(10);
Person p3 = new Person(5,"Tom");
System.out.println(p3.getName()); p3.setName("Paul");
System.out.println(p3.getName()); Person p4 = new Person(25);
Person p5 = new Person(20);
boolean b = p4.compare(p5);
System.out.println(b); }
}

static关键字:

用于修饰成员变量(全局变量)和函数.

被static修饰的变量,叫类变量,也叫做静态变量.

static成员变量只初使化一次,防止在其他文件单元中再被引用.

static局部变量和普通局部变量的区别:

1.把局部变量改变为静态变量后,改变了它的存储方式即改变了它的生存期.

2.把成员变量改变为静态变量后,改变了它的作用域,限制了它的使用范围.

static局部变量只被初始化一次,下一次依据上一次结果值;  

<什么时候定义静态函数:当功能内部没有访问到静态数据(对象的特有数据)时,该函数可以定义为静态函数.>???

由于静态函数在内存中只有一个实例,在使用过程中不需要再new实例化对象.这些类一般都是无状态的,函数谁调用都是一样的.

因此它们适用于工具类中.

工具类应用的有关代码练习操作:

 /**
这是一个可以对数组进行操作的工具类,可以获取最值,排序,打印等功能.
@author JerryHo
@version V1.0
*/
//要生成帮助文档,这个类必须是public的.
public class ArrayTool
{
//将构造函数私有化以后,可以强制该类不能建立对象
/**
空参数构造函数.
*/
private ArrayTool()
{
//系统会有个默认的构造函数
}
/**
获取整型数组中的最大值.
@param arr 接收一个int类型的数组.
@return 返回该数组中的一个最大值.
*/
public static int getMax(int arr[])
{
int max=0;
for(int x=0; x<arr.length;x++)
if(arr[max]<arr[x])
{
max = x;
}
return arr[max];
}
/**
获取整型数组中的最小值.
@param arr 接收一个int类型数组.
@return 返回该数组中的一个最小值.
*/
public static int getMin(int arr[])
{
int min=0;
for(int x=0;x<arr.length;x++)
{
if(arr[min]>arr[x])
{
min = x;
}
}
return arr[min];
}
/**
对int类型的数组进行选择排序.
@param arr 接收一个int类型数组.
*/
public static void selectSort(int arr[])
{
for(int x =0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
//int temp =arr[x];
//arr[x]=arr[y];
//arr[y]=temp;
swap(arr,x,y);
}
}
}
}
/**
对数组进行冒泡排序.
@param arr 接收一个int类型数组.
*/
public static void bubbleSort(int arr[])
{
for(int x=0;x<arr.length-1;x++)
{
for(int y =0;y<arr.length-1-x;y++)
if(arr[y]>arr[y+1])
{
//int temp =arr[y];
//arr[y]=arr[y+1];
//arr[y+1]=temp;
swap(arr,y,y+1);
}
}
}
/**
交换整型数组中的两个变量的值.
@param arr 接收一个int类型数组.
@param a 要置换的位置.
@param b 要置换的位置.
*/
private static void swap(int[]arr,int x,int y)
{
int temp =arr[x];
arr[x]=arr[y];
arr[y]=temp;
} /**
打印整型数组中的元素.
@param arr 接收一个int类型数组.
打印形式为:[element1,element2,...]
*/
public static void printArray(int arr[])
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
{
System.out.print(arr[x]+",");
}
else
{
System.out.println(arr[x]+"]");
}
}
}
}
 class ArrayToolDemo
{
public static void main(String args[])
{
/*
int [] arr= new int[]{3,5,1,8,4,9,12};
int [] arr1 = new int[]{9,3,6,18,13,4,23};
ArrayTool at = new ArrayTool(); int max = at.getMax(arr);
System.out.println("max = "+max); int min =at.getMin(arr);
System.out.println("min = "+min); at.printArray(arr);
at.selectSort(arr);
at.printArray(arr); at.printArray(arr1);
at.bubbleSort(arr1);
at.printArray(arr1);
*/ //直接用类名调用有关的函数.
int [] arr= new int[]{3,5,1,8,4,9,12};
int [] arr1 = new int[]{9,3,6,18,13,4,23}; int max = ArrayTool.getMax(arr);
System.out.println("max = "+max);
int min = ArrayTool.getMin(arr);
System.out.println("min = "+min); int Max = ArrayTool.getMax(arr1);
System.out.println("max = "+Max);
int Min = ArrayTool.getMin(arr1);
System.out.println("min = "+Min); ArrayTool.printArray(arr);
ArrayTool.selectSort(arr);
ArrayTool.printArray(arr); ArrayTool.printArray(arr1);
ArrayTool.selectSort(arr1);
ArrayTool.printArray(arr1); }
}

昨天停了快一天的电,一晚上热的没睡好,早上起来就开始看,看完教程还得自己思考,好多地方不是很懂不过还是慢慢来把,感觉脑袋都有些僵硬了,看完视频教程都快11点多了,又得做笔记,还得想想总结一天学的东西,然后敲代码,编译以后发现总是好多问题,又改来改去的看问题出现在哪里,一折腾就11点快12点了,在还得写博客记录,一天下来感觉又充实又累人,有种高三的感觉啊,洗澡睡觉去,明天还得继续..hold on...!

Java基础笔记-面向对象2的更多相关文章

  1. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

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

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

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

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

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

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

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

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

  6. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  7. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  8. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  9. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

随机推荐

  1. Java 基础类型

    在Java中,基本的数据类型主要有8种: 1)int  4 字节(byte)  -2的31次方到2的31次方-1 2)short 2 字节(byte) -2的15次方到2的15次方-1 3)long ...

  2. Singleton 单例模式 泛型 窗体控制

    MDI子窗体 控制单例 /// <summary> /// 单例提供者 /// </summary> /// <typeparam name="T"& ...

  3. OpenCV-Python教程(10、直方图均衡化)

    相比C++而言,Python适合做原型.本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处.这篇文章介绍在Python中使用OpenCV和NumP ...

  4. Java面试题之八

    四十一.面向对象的特征有哪些方面 四大特征大家都知道:抽象.继承.封装.多态.这是个理解性表述题,每个人的表述方式可能都不一样.下面仅选择一种作为参考: 1.抽象: 抽象——就是忽略一个主题中与当前目 ...

  5. win7下安装Ubuntukylin-14.04双系统

    工具准备: 下载ISO系统镜像,UltraISO,EasyBCD,分区助手,8G 优盘 U盘启动制作流程: 1,打开分区助手,从硬盘中分出空闲空间(60G)作为Ubuntu工作空间,文件系统设为Ext ...

  6. 【floyd求最小环】【Vijos 1046】【观光旅游】

    标签:图结构 最短路 题目大意:给你一个无向图,至少经过3个节点的简单回路(不能包括其他环) 一开始的思路:用一个NUM[i][j]表示i到j的最短路经过几个节点,显然解法不太优美,而且还是错的 再想 ...

  7. android stuido 快捷键

    Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码 ...

  8. sqlserver 2008存储过程 多个可空条件任意组合

    很多程序员在实际开发中,经常遇到这种情况,列表上方有很多条件,包含下拉框,输入框等等,这些条件都可以不输入,如果我们需要写一个存储过程,很多条件挨个判断是否为空,且进行任意组合,任何一个开发人员都会疯 ...

  9. 自定义Dialog,实现由下而上的弹出效果(模仿QQ退出等)

    方法: public Dialog createDialog(Context context, View view) { Dialog mSelectPhotoDialog = null; mSele ...

  10. hdu1867A + B for you again

    Problem Description Generally speaking, there are a lot of problems about strings processing. Now yo ...