Java入门——面向对象基础
本博客目的
- 练习题(重要)
- 面向对象的概念(了解)
- 面向对象的三大特性(重要)
2016-09-10——13:13:39
ll练习题
用方法调用的形式进行数组排序
1 package Sep10; 2 //调用方法完成两个整形数组的排序并打印 3 public class ArrayRefDemo03 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 int age[]={12,32,43,54,43}; 11 int score[]={123,312,432,54,65}; 12 sort(age); 13 print(age); 14 System.out.println(" ************************************"); 15 sort(score); 16 print(score); 17 } 18 public static void sort(int x[]){ 19 for(int i=0;i<x.length;i++){ 20 for(int j=i+1;j<x.length;j++){ 21 if(x[i]>x[j]){ 22 int middle=x[i]; 23 x[i]=x[j]; 24 x[j]=middle; 25 } 26 } 27 } 28 29 } 30 public static void print(int temp[]){ 31 for(int i=0;i<temp.length;i++){ 32 System.out.print(temp[i]+" "); 33 } 34 } 35 }
12 32 43 43 54 ************************************ 54 65 123 312 432
使用Java类库进行数组排序
1 package Sep10; 2 import java.util.Arrays; 3 public class ArrayRefDemo04 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 int age[]={12,32,43,54,43}; 11 int score[]={123,312,432,54,65}; 12 Arrays.sort(age);//Java类库中自带的Array类中本身有排序函数 13 print(age); 14 System.out.println(" ************************************"); 15 Arrays.sort(score); 16 print(score); 17 } 18 public static void print(int temp[]){ 19 for(int i=0;i<temp.length;i++){ 20 System.out.print(temp[i]+" "); 21 } 22 } 23 }
12 32 43 43 54 ************************************ 54 65 123 312 432
编写求1!+2!+3!+......+30!并显示结果的程序
1 package Sep10; 2 //编写求1!+2!+3!+......+30!并显示结果的程序! 3 public class Demo01 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 long y=0; 11 for(int i=1;i<=30;i++){ 12 y=y+factorSeries(i); 13 } 14 System.out.println(y); 15 } 16 //求阶乘的函数 17 public static int factorSeries(int x){ 18 int j=x; 19 while(x>1){ 20 j=j*(x-1); 21 x--; 22 } 23 return j; 24 } 25 }
3430808089
面向对象的概念
1 package Sep10; 2 //对象的创建于使用 3 public class ClassDemo02 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Person per=new Person("Bob",23); 11 per.info(); 12 } 13 14 } 15 class Person{ 16 String name; 17 int age; 18 public Person(String name,int age){ 19 this.name=name; 20 this.age=age; 21 } 22 public void info(){ 23 System.out.println("姓名"+name+",年龄"+age); 24 } 25 }
姓名Bob,年龄23
对象引用传递
1 package Sep10; 2 //对象引用传递其实就是把等号后边的对象的栈内存空间交给等号前面的使用 3 public class CalssDemo05 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Person2 per1=new Person2(); 11 Person2 per2=new Person2(); 12 per1.age=21; 13 per1.name="Bob"; 14 per2=per1; 15 per2.age=23; 16 per2.name="glove"; 17 per1.info(); 18 per2.info(); 19 } 20 } 21 class Person2{ 22 String name; 23 int age; 24 public void info(){ 25 System.out.println("姓名:"+name+",年龄"+age); 26 } 27 }
姓名:glove,年龄23
姓名:glove,年龄23
封装性
在开发中一般将类的属性封装,属性是私有的,无法通过对象进行访问,必须通过setter和getter方法获得,可以在setter处加上“检验代码”以确保私有变量的现实意义。而通过setter赋值显然是一种非常麻烦的方法,所以一般通过构造方法初始化对象。
类设计
String类
可以直接用“实例化”,也可以用new String(“”),无法直接用'=='来比较字符串的内容,需要用到equals方法——str1.euqals(str2);返回一个boolean量。
String对象内容的改变实际上是通过内存地址的“断开-连接”实现的,而本身字符串中的内容并没有任何改变。