Java基础笔记-面向对象2

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

格式:

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关键字,构造函数和构造代码块的相关代码演示.

 1 class Person
 2 {
 3     private int age;
 4     private String name ;
 5     /*
 6     构造代码块,给对象进行初始化,对象一建立就运行,且优先于构造函数.
 7     与构造函数的区别:构造代码块是给所有对象进行初始化的,而构造函数是给对应的对象进行初始化.
 8     构造代码块中定义的是不同对象的共性的初始化内容.
 9     */
10     {
11         System.out.println("构造代码块!");
12         cry();
13     }
14     //构造函数
15     Person()
16     {
17         System.out.println("A: name = "+name+"    age = "+age);
18         //cry();
19     }
20     /*this: 关键字
21     作用:用于区别成员变量与局部变量同名的情况.
22     this代表它所在类的所属对象的引用,即哪个函数调用this所在的函数,this就代表哪个对象.
23     */
24     Person(int age)
25     {
26         this.age = age;
27         System.out.println("B: name = "+name+"    age = "+age);
28         //cry();
29     }
30     Person(int age ,String name)
31     {
32         this.age = age;
33         this.name = name;
34         System.out.println("C: name = "+this.name+"    age = "+this.age);
35         //cry();
36     }
37
38     /*
39     this的应用:定义一个函数,比较两个人年龄是否相同.
40     */
41     public boolean compare(Person p)
42     {
43         return this.age == p.age;  //this.age中的this代表的是调用这个函数的对象. ===>77行中的对象p4调用了compare函数,this就是代表的p4.
44     }
45
46     //设置名字的函数
47     public void setName(String name)
48     {
49         this.name = name;
50     }
51     //获取名字的函数
52     public String getName()
53     {
54         return name;
55     }
56
57     public void cry()
58     {
59         System.out.println("Cry--------!");
60     }
61 }
62
63 class PersonDemo2
64 {
65     public static void main(String args [])
66     {
67         Person p1 = new Person();
68         Person p2 = new Person(10);
69         Person p3 = new Person(5,"Tom");
70         System.out.println(p3.getName());
71
72         p3.setName("Paul");
73         System.out.println(p3.getName());
74
75         Person p4 = new Person(25);
76         Person p5 = new Person(20);
77         boolean b = p4.compare(p5);
78         System.out.println(b);
79
80     }
81 }

static关键字:

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

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

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

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

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

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

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

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

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

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

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

  1 /**
  2 这是一个可以对数组进行操作的工具类,可以获取最值,排序,打印等功能.
  3 @author JerryHo
  4 @version V1.0
  5 */
  6 //要生成帮助文档,这个类必须是public的.
  7 public class ArrayTool
  8 {
  9     //将构造函数私有化以后,可以强制该类不能建立对象
 10     /**
 11     空参数构造函数.
 12     */
 13     private ArrayTool()
 14     {
 15         //系统会有个默认的构造函数
 16     }
 17     /**
 18     获取整型数组中的最大值.
 19     @param arr 接收一个int类型的数组.
 20     @return 返回该数组中的一个最大值.
 21     */
 22     public static int getMax(int arr[])
 23     {
 24         int max=0;
 25         for(int x=0; x<arr.length;x++)
 26         if(arr[max]<arr[x])
 27         {
 28             max = x;
 29         }
 30         return arr[max];
 31     }
 32     /**
 33     获取整型数组中的最小值.
 34     @param arr 接收一个int类型数组.
 35     @return 返回该数组中的一个最小值.
 36     */
 37     public static int getMin(int arr[])
 38     {
 39         int min=0;
 40         for(int x=0;x<arr.length;x++)
 41         {
 42             if(arr[min]>arr[x])
 43             {
 44                 min = x;
 45             }
 46         }
 47         return arr[min];
 48     }
 49     /**
 50     对int类型的数组进行选择排序.
 51     @param arr 接收一个int类型数组.
 52     */
 53     public static void selectSort(int arr[])
 54     {
 55         for(int x =0;x<arr.length-1;x++)
 56         {
 57             for(int y=x+1;y<arr.length;y++)
 58             {
 59                 if(arr[x]>arr[y])
 60                 {
 61                     //int temp =arr[x];
 62                     //arr[x]=arr[y];
 63                     //arr[y]=temp;
 64                     swap(arr,x,y);
 65                 }
 66             }
 67         }
 68     }
 69     /**
 70     对数组进行冒泡排序.
 71     @param arr 接收一个int类型数组.
 72     */
 73     public static void  bubbleSort(int arr[])
 74     {
 75         for(int x=0;x<arr.length-1;x++)
 76         {
 77             for(int y =0;y<arr.length-1-x;y++)
 78                 if(arr[y]>arr[y+1])
 79                 {
 80                     //int temp =arr[y];
 81                     //arr[y]=arr[y+1];
 82                     //arr[y+1]=temp;
 83                     swap(arr,y,y+1);
 84                 }
 85         }
 86     }
 87     /**
 88     交换整型数组中的两个变量的值.
 89     @param arr 接收一个int类型数组.
 90     @param a 要置换的位置.
 91     @param b 要置换的位置.
 92     */
 93     private static void swap(int[]arr,int x,int y)
 94     {
 95         int temp =arr[x];
 96         arr[x]=arr[y];
 97         arr[y]=temp;
 98     }
 99
100     /**
101     打印整型数组中的元素.
102     @param arr 接收一个int类型数组.
103     打印形式为:[element1,element2,...]
104     */
105     public static void printArray(int arr[])
106     {
107         System.out.print("[");
108         for(int x=0;x<arr.length;x++)
109         {
110             if(x!=arr.length-1)
111             {
112                 System.out.print(arr[x]+",");
113             }
114             else
115             {
116                 System.out.println(arr[x]+"]");
117             }
118         }
119     }
120 }
 1 class ArrayToolDemo
 2 {
 3     public static void main(String args[])
 4     {
 5         /*
 6         int [] arr= new int[]{3,5,1,8,4,9,12};
 7         int [] arr1 = new int[]{9,3,6,18,13,4,23};
 8         ArrayTool at = new ArrayTool();
 9
10         int max = at.getMax(arr);
11         System.out.println("max = "+max);
12
13         int min =at.getMin(arr);
14         System.out.println("min = "+min);
15
16         at.printArray(arr);
17         at.selectSort(arr);
18         at.printArray(arr);
19
20         at.printArray(arr1);
21         at.bubbleSort(arr1);
22         at.printArray(arr1);
23         */
24
25         //直接用类名调用有关的函数.
26         int [] arr= new int[]{3,5,1,8,4,9,12};
27         int [] arr1 = new int[]{9,3,6,18,13,4,23};
28
29         int max = ArrayTool.getMax(arr);
30         System.out.println("max = "+max);
31         int min = ArrayTool.getMin(arr);
32         System.out.println("min = "+min);
33
34         int Max = ArrayTool.getMax(arr1);
35         System.out.println("max = "+Max);
36         int Min = ArrayTool.getMin(arr1);
37         System.out.println("min = "+Min);
38
39         ArrayTool.printArray(arr);
40         ArrayTool.selectSort(arr);
41         ArrayTool.printArray(arr);
42
43         ArrayTool.printArray(arr1);
44         ArrayTool.selectSort(arr1);
45         ArrayTool.printArray(arr1);
46
47
48     }
49 }

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

时间: 2024-10-07 02:54:17

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

[Java基础笔记]数组

Java基础笔记 定义数组: int[] numbers = new int[100]; //方法一 double[] num = new double[10]; int[][] a = new int[2][5]; 通过new创建的数组,元素默认值为0(0.0) int[] scores = {5,4,33,12,46}; //方法二 int[][] a = { //位数不足,自动补0 {5,3,2,1,6}, {10,12,14,15}, }; 数组特性:存储的都是同类型数据:长度定义后不可

Java基础和面向对象

Java基础和面向对象 一.数据类型和运算符 标识符 组成:字母.数字.下划线.$ 首字母:不能是数字 见名知义 不能是关键字(48个) 正确的:name.name123.age._name.$name 错误的:1name.public.123.na%me 标识符主要给一个元素起名字,需要符合起名字的以上4种规则.比如说,类的名字:首字母大写:变量名称:小写:方法名称:驼峰命名:数组名称.接口名称.集合名称. //你定义为汉字也可以,不过不推荐,因为国际语言以English为主.为了面向世界,使

java 基础笔记 基本数据类型对象包装类

基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作. 用于描述该对象的类就称为基本数据类型对象包装类. 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char   Character boolean Boolean 该包装对象主要用于基本类型和字符串之间的转换. 基本类型-->字符串 1.基本类型数据+"&quo

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

Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Annotation的工作原理:2.@Override注解:3.@Deprecated注解:4.@SuppressWarnings注解:5.自定义注解:5.1.添加变量:5.2.添加默认值:5.3.多变量使用枚举:5.4.数组变量:6.设置注解的作用范围:6.1.在自定义注解中的使用例子:7.使用反射读取R

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

原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-import.html#1.2.values方法的使用: Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由arthinking发表于4年前 | Java基础 | 暂无评论 |  被围观 8,332 views+ 1.枚举(Enum):1.1.枚举类型中的两个静态方法:1.2.values方法的使用:

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

<p>------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------</p><p> </p><p>笔记一共记录了毕向东的java基础的25天课程,分上.中.下</p><p>本片为中篇,涵盖11-20天课程</p&

Java基础笔记-异常总结,包

异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建立的对象都具备可抛性.可以被throw和throws关键字所操作,只有异常体系具备这个特点. throw和throws的用法区别: throw定义在函数内,用于抛出异常对象. throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开. 当函数内容有throw抛出异常对象,并未进行tryca

Java基础之一 面向对象

Java 是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java有功能强大和易用两个特征. 面向对象的程序设计(Object Oriented Programming),一种将程序分解为封装数据及相关操作的模块而进行的编程方式. 面向对象的做法确实是把属性和功能封装起来,但是其核心是归类和抽象. 把相关的属性和功能集中起来,把可以分离的部分隔绝开来,从而把复杂的业务逻辑切割成互相之间可以相对独立的部分,降低开发的难度. 所以面向对象绝

java 基础笔记 第一波~

Java 基础知识  首次复习. 1.作用域 其实就是这个变量可以起作用的范围. 2.有时候碰到的 value ,其实就一个变量名 ,别想的太复杂. 3.Java 局部变量,实例变量 ,类变量(静态变量)区别 1,局部变量 是类的方法中的变量: 2.实例变量 类中独立于方法之外的变量 不过没有static修饰 也叫对象变量 3.类变量(静态变量) 类中独立于方法之外的变量 用static修饰 也叫静态变量 伪代码说明 Public class Variable{ Static int allcl