java入门的语法学习

用java语言写了一个求两个数最大公约数的程序:

import java.io.*;
import java.util.*;
import java.math.*;



public class Main{
	static int a[] = new int[5];
	
	static int gcd(int a, int b){
		return b==0?a:gcd(b, a%b);
	}
	
	public static void main(String []args){
		Scanner reader = new Scanner(System.in);
		int n, m;

		while(reader.hasNext())
		{
			n = reader.nextInt();
			m = reader.nextInt();
			int dd = gcd(n, m);
			System.out.println(dd);
		}
	}
}

 

 

java可以进行数组的引用,比如 //b=a,b数组和a数组是相同的地址。 但如果我们要复制数组呢,我们可以用Arrays类的调用方法。

这个是最实用的使用方式:

import java.util.*;

public class myCode {

	public static void main(String[] args) {
        int a[] = {1, 2, 3, 4, 5, 6};
        int b[], c[], d[];
        b = Arrays.copyOf(a, 10);//复制10个元素过来,不够的默认为0
        System.out.println(Arrays.toString(a));
        
        System.out.println(Arrays.toString(b));
        
        c = Arrays.copyOfRange(a, 3, 5);// 复制下标3 至 5-1
        System.out.println(Arrays.toString(c));
        
        d = Arrays.copyOfRange(a, 3, 9);//复制3至8,不够的默认为0
        System.out.println(Arrays.toString(d));
        
	}
}

/*
输出结果:
   [1, 2, 3, 4, 5, 6]
   [1, 2, 3, 4, 5, 6, 0, 0, 0, 0]
   [4, 5]
   [4, 5, 6, 0, 0, 0]
 */

 

 java中数组的函数排序和函数进行二分查找。

import java.util.*;

public class myCode {

	public static void main(String[] args) {
        int a[] = {11, 2, 13, 44, 105, 86, 77, 32};
        Arrays.sort(a);//数组函数排序
        System.out.println(Arrays.toString(a));
        
        int key=55;//二分查找55是否存在于a数组
        int index = Arrays.binarySearch(a, key);
        if(index>=0)
        	System.out.println("关键字存在,位置是"+index);
        else
        	System.out.println("index返回值是负数,表示关键字不存在");
	}
}

 java switch语句中进行枚举类型值得使用:

import java.util.*;

enum month{
	January, February, March, April, May, 
    June, July, August, September, 
	October, November, December
}

public class myCode {

	public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
		month ans=month.January;
		
        switch(ans){
        case January: System.out.println("1月"); break;
        case February: System.out.println("2月"); break;
        case March: System.out.println("3月"); break;
        case April: System.out.println("4月"); break;
        case May: System.out.println("5月"); break;
        case June: System.out.println("6月"); break;
        default: System.out.println("系统没有匹配到"); break;
        }
	}
}

 

 

1.类的定义及使用:

样例代码:

class Main{
	String name;
	int age;
	String sex;
	String address;
	void eat(){
		System.out.println("我会吃饭 ");
	}
	void run(){
		System.out.println("我会跑步  ");
	}
	public static void main(String[] args) {
		Main p;
		p = new Main();
		p.name = "张三";
		p.age=18;
		p.sex="女";
		p.address = "山东淄博";
		System.out.println(p.name+"说:");
        System.out.println("我叫"+p.name );
        System.out.println("性别"+p.sex);
        System.out.println("我今年"+p.age+"岁");
        System.out.println("我住在"+p.address );
        p.eat();
        p.run();
	}
}

 也可以这样写:

package java_1;


class person{
	String name;
	int age;
	String sex;
	String address;
	void eat(){
		System.out.println("我会吃饭 ");
	}
	void run(){
		System.out.println("我会跑步  ");
	}
}
public class Main{
	public static void main(String[] args) {
		person p;
		p = new person();
		p.name = "张三";
		p.age=18;
		p.sex="女";
		p.address = "山东淄博";
		System.out.println(p.name+"说:");
        System.out.println("我叫"+p.name );
        System.out.println("性别"+p.sex);
        System.out.println("我今年"+p.age+"岁");
        System.out.println("我住在"+p.address );
        p.eat();
        p.run();
	}
}

 

//第四章 类与对象  
//可变参数:是指在生命方法时,不给出参数列表中从某项直到最后一项的参数的名字和个数
//但这些参数的类型必须相同
public void f(int ... x);
//在这个方法f()的参数列表中,从第一个至最后一个参数都是int类型,
//但连续出现的int类型参数个数不确定,称x是方法f()的参数列表中可变参数的“参数代表”
//也可以这样定义:
public void g(double a, int ... x);
//参数代表可以通过下标运算来代表参数列表中的具体参数,即x[0],x[1],x[2]...x[m]
//分别表示x代表的第1~m个参数(很类似一个不确定长度的数组)
//对于一个参数代表,例如x,x.length等于x所代表的参数的个数

 应用:(分到不同的文件中去执行下面的代码)

package java_1;

public class Computer {
	public double getResult(double a, int ... x){
		double result=0D;
		int sum=0;
		for(int i=0; i<x.length; i++){
			sum=sum+x[i];
		}
		result = a*sum;
		return result;
	}
}

public class Main{
	public static void main(String[] args){
		Computer computer=new Computer();
		double result = computer.getResult(1.0/3, 10,20,30);
		System.out.println("10+20+30的平均数:"+result );
		
		result = computer.getResult(1.0/6, 5,8,9,6,3,66);
		System.out.println("这些数的平均数是:"+result );
	}
}

 

//输出结果:
10+20+30的平均数:20.0
这些数的平均数是:16.166666666666664

 

//第四章
//4.6 stdtic关键词
//类体的定义包括:成员变量的定义和方法的定义,并且成员变量的定义又分为:实例变量
//和类变量。用static声明的变量就是累变量。同样的,方法的定义除了构造方法外,还
//有实例方法和类方法。

/*
 1.实例方法可以调用该类中的实例方法或类方法
 2.类方法只能调用该类的类方法,不能调用该类的实例方法
 */
//注意:对象共享类变量

 下面的代码程序:对static变量的调用 和 static变量的值(分开到不同的文件中!!!)。

 

package java_1;

public class lader {
	double 上底, 高; //实例变量
	static double bottom; //类变量
	
	void set上底(double a){
		上底 = a;
	}
	void set下底(double b){
		 bottom = b;
	}
    double get上底(){
    	return 上底;
    }
    double getBottom(){
    	return bottom;
    }
}

public class Main {
	public static void main(String[] args) {
		 lader.bottom = 100;
		 //lader的字节码被加载到内存,通过类名操作类变量
		 lader lader1 = new lader();
		 lader lader2 = new lader();
		 lader1.set上底(28);
		 lader2.set上底(66);
		 System.out.println("lader1的上底和下地:"+lader1.get上底()+"  "+lader1.getBottom() );
		 System.out.println("lader2的上底和下底:"+lader2.get上底()+"  "+lader2.getBottom() );
	}

}

 

//第四章
//4.8 包
/*
  包是java语言有效管理类的一个机制。
 不同java源文件中可能出现名字相同的类,想要区分开,就需要使用包名
 使用包名的目的是有效的区分开名字相同的类
 
 package为该源文件声明的类指明包名
 package abc;
 package a.b.c;  //都合法
 
 */

 

第5章 继承与接口


面向对象编程 的特点:类的封装  类的继承  类的多态。

5.1节
 *利用继承可以先编写一个具有共同属性的类,然后根据一般类编写具有特殊属性的类。
 * 新类继承一般类的状态和行为,并根据需要增加新的状态和行为。
 * 由继承得到的类成为 子类,被继承的类称为 父类(超类)
 * 特别注意:java不支持多重继承(只能有一个父类,接口机制会弥补这个缺点)
格式:
class 子类名 extends 父类名{
    ......
}

extends关键字包含在Object的类中,Object是java.lang包中的类。

 

posted @ 2015-03-13 13:38  我喜欢旅行  阅读(181)  评论(0编辑  收藏  举报