Java入门

2020.5.15补充知识

1.用类实例化一个对象后,想要修改对象的某个属性,就需要调用setXXX方法(这个方法需要在类中写一个set函数)
2.被static修饰的变量(静态变量),方法可以被类直接调用而不用用类new一个对象再用对象调用方法。一个类中的方法,如果用不用static修饰,只属于每一个单独的对象,但是如果用static修饰,则属于该类下面全部的对象在这里插入图片描述
3.什么叫方法的重载? 在一个类里面定义的方法名相同但是参数不同的方法
4.对象的初始化必须由构造方法完成。构造方法可以有参可以无参,有参的话,在new对象的时候就需要添加参数 :Person p = new Person(18) 18就是构造方法里的参数
5.子类继承了父类,父类的方法子类可以直接用,但是父类里在类内部定义的成员变量必须用super继承。继承中实现方法的重写,在子类中在定义一个和父类中方法名一样的方法即可
6.对象的向上转型, 是说鱼是动物, Anminal anminal=new Fish();anminal实际上是一个鱼的对象。不能使用fish类新增的方法和变量。
7.嵌套类:在类中再定义一个类

public class Contents{
	public class contents(){
	int a=10
	}
}

8.匿名类 在创建new对象的时候就写类的主体

Person p=new Person(){
	public void method(){
	System.out.print("a");
	}
}

9.(Collection类)Vector:对比于Array,当更多的元素被加入进来以至超出其容量时,Vector的size会动态增长,而Array容量是定死的。同时,Vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了)。注意:当调用Vector的size()方法时,返回Vector中实际元素的个数。(好像BufferedString)
10.快速拷贝数组方法 通过用System.currentTimeMillis时间对比,确实用arraycopy方法比for循环快点
在这里插入图片描述

 arraycopy(public static void arraycopy(Object src,int srcPos,Object dest,int destPos,intlength)
 /*
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量
*/

11.哈希值好像就是Java里的地址 先不做深入了解了
12.DOS命令就是黑框框
13.static double hypot(double x, double y) (Math包里)
返回 sqrt(x2 +y2),没有中间溢出或下溢。
14.生成随机数的两种方法
Math.random(); //产生0-1(不含)的随机数

Random r=new Random();
		r.nextInt(100);	//产生0-100(不含)的随机int
		r.nextFloat(100); //float类型

15.万物皆可String
String s= String.valueOf( ) //8种类型的值都可以valueOf,还原回来还不是很会
16.获取当前时间

Date date2 = new Date(System.currentTimeMillis() + 1000);
		System.out.println(date2);

第一章 程序设计基础

标识符规范

  1. 不能以数字开头 不能是关键字
  2. 变量名和方法名的第一个单词的首字母小写,从第二单词开始每个单词首字母大写
  3. 常量名所有字母都要大写,单词之间用下滑线连接 eg: DAY_OF_MONTH
  4. 类名首字母都大写,对象名第一个字母小写,后面每个单词首字母大写,方法名第一个字母一般小写

注释
// :单行注释
“/* +*/” 多行注释 加号没有
/** + */ 文档注释 加号没有

输出:System.out.println(“Hello world”); //System系统类
System.out.println : 换行输出
System.out.print : 不换行输出
对象方法
有main函数的称为主类
一个java文件只能有一个main函数!类可以有多个,但是public class也只能有一个
建包 package
建类 class
在包里面可以建类适合容易
包里面有很多相似的类,成为一个包
封装
把一个个事物放到类里,再放到包里,适合管理

第二章基础知识

1.基本语法格式
2.[修饰符]class 类名{关键字
程序代码
}

int a=100;
System.out.println("a="+a);//输出a的值
class 声明类,必须用class
类名称通常首字母大写

在这里插入图片描述

强制类型转换

基础知识:

需要定义两个类,一个包含主函数,另一个是别的类


public class 貂蝉 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TypeConversion tConversion=new TypeConversion();	//用类创建对象
		tConversion.operate();								//用对象调用方法
/*TypeConversion是类名,tConversion是对象名,用类创建对象,new是一个关键字
tConversion.operate()是一个方法,用对象调用方法。
*/
	}

}
//--------------------------------------------
public class TypeConversion {
	public static final double MY_CONST=6.89;
	public void operate(){
		char mychar='h';
		byte mybyte=6;
		int myint =100;
		long mylong=89L;
		float myfloat=8.77f;
		double mydouble=6.99;
		int tcint=mychar+myint;
		long tclong=mylong-tcint;
		float tcfloat=mybyte*myfloat;
		double tcdouble=tcfloat/tcint+mydouble;
		System.out.println("tcint="+tcint);		//这个+和后面println()里面的+都表示字符串连接
		System.out.println("tclong="+tclong);
		System.out.println("tcfloat="+tcfloat);
		System.out.println("tcdouble="+tcdouble);
		tcint=(int)tcdouble;
		System.out.println("tcint="+tcint);
		tcint=(int)MY_CONST+(int)mychar;
		System.out.println("tcint="+tcint);
	}
}

IF条件语句

//本程序给定一个成绩,划分通过还是不通过。成绩大于等于60时,输出通过与成绩,繁殖只输出成绩
public class If {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TestGrade tGrade=new TestGrade();
		//下面两条语句可以分别注释,以测试不同情况
		tGrade.print60(70);
		tGrade.print60(50);
	}

}
//**********************************
//需要新建一个类
public class TestGrade {		
	public void print60(int grade){
		if(grade>=60){
			System.out.println("通过,成绩为:");
		}
		System.out.println(grade);
	}
}

switch语句


public class switch {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//封装了switch语句的程序
		TestSwitchGrade sGrade=new TestSwitchGrade();
		sGrade.print(79);			//调用函数
		sGrade.print(53);
		sGrade.print(100);
	}

}
//***********************************

public class TestSwitchGrade {
	public void print(int grade){
		int level=grade/10;
		switch(level){
		case 10:
			System.out.println("666");
			break;
		case 9:
			System.out.println("成绩:优秀");
			break;
		case 8:
			System.out.println("成绩:良好");
			break;
		case 7:
			System.out.println("成绩:中等");
			break;
		case 6:
			System.out.println("成绩:及格");
			break;
		default:
			System.out.println("成绩:不合格");
		}
		System.out.println("成绩为:"+grade);
	}
}

For语句


public class While {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SumNumber sNumber=new SumNumber();
		//求自然数1-100之间的偶数之和
		int sEven=sNumber.sumEven(0,100);
		System.out.println("偶数之和="+sEven);
		//求自然数1-100之间奇数的和
		int sOdd=sNumber.sumOdd(1,100);
		System.out.println("奇数之和="+sOdd);
	}

}
//********************************

public class SumNumber {
	//判断某数是否为偶数方法
	public boolean isEven(int aNumber){
		if(aNumber%2==0){
			return true;
		}else{
			return false;
		}
	}

//求任意两个自然数之间的偶数和
public int sumEven(int start,int end){
	int sum=0;
	if(!isEven(start)){
		start+=1;
	}
	for(int i=start;i<=end;i+=2){
		sum+=i;
	}
	return sum;
}
//求任意两个自然数之间的奇数和
public int sumOdd(int start,int end){
	int sum=0;
	if(isEven(start)){
		start+=1;
	}
	for(int i=start;i<=end;i+=2){
		sum+=i;
	}
	return sum;
	}
}
//类里面的public int(boolean,double)是可以相互调用的,不用在乎顺序

while语句


public class While {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//封装了while语句结构的程序
		SumNumberWhile sNumber=new SumNumberWhile();
		//求自然数1-100之间的偶数之和
		int sEven=sNumber.sumEven(0,100);
		System.out.println("偶数之和="+sEven);
		//求自然数1-100之间奇数的和
		int sOdd=sNumber.sumOdd(1,100);
		System.out.println("奇数之和="+sOdd);
	}

}
//*****************************************

public class SumNumberWhile {
	public boolean isEven(int aNumber){
		if(aNumber%2==0){
			return true;
		}else{
			return false;
		}
	}

//求出任意两个自然数之间的偶数的和
public int sumEven(int start,int end){
	int sum=0;
	if(!isEven(start)){
		start+=1;
	}
	for(int i=start;i<=end;i+=2){
		sum+=i;
	}
	return sum;
}
//求出任意两个自然数之间的奇数的和
public int sumOdd(int start,int end){
	int sum=0;
	if(isEven(start)){
		start+=1;
	}
	for(int i=start;i<=end;i+=2){
		sum+=i;
	}
	return sum;
	}
}

Do while


public class Do_while {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SumNumberDoWhile sNumber=new SumNumberDoWhile();
		//求从自然数5开始所有的自然数之和,如果其和刚超过指定数值就停止循环
		sNumber.sum(5,200);
	}

}
//****************************************

public class SumNumberDoWhile {
	public void sum(int start,int end){
		int n=0,sum=start;
		do{
			sum+=n;
			n++;
		}while(sum<=end);
		System.out.println("连续"+n+"个自然数");			//两个+表示连接字符串
		System.out.println("自然数之和="+sum);
	}
}

循环嵌套


public class 循环嵌套 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		NestLoop nLoop=new NestLoop();
		nLoop.print(10);
	}

}
//****************************

public class NestLoop {
	//本程序使用循环语句结构的嵌套实现数字三角形的形状
	public void print(int level){
		for(int i=1;i<=level;i++){
			int j=1;
			while(j<=level+1-i){
				System.out.print("  ");
				j++;
			}//内层while循环结束
			for(int m=1;m<=i;m++){
				if(i>=level){
					System.out.print(+i+"  ");
				}else{
					System.out.print(+i+"   ");
				}
			}//内层for循环结束
			System.out.println(" ");
		}//外层for循环结束
	}
}

效果图如下
在这里插入图片描述

九九乘法表

好有自信145*154/cb


public class ninenine {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Nine nNine =new Nine();
		nNine.operate(9);
	}

}
//************************************************

public class Nine {
	public void operate(int n){
		for(int i=1;i<=n;i++){
			System.out.print("\n");
			for(int j=1;j<=i;j++){
				System.out.print(j+"*"+i+"="+(i*j)+" ");
			}
		}
	}
}

效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三章 面向对象的程序设计

类和对象


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ARectangle myRectangle,yourRectangle;//声明对象
		myRectangle =new ARectangle();//	使用new和构造方法为对象实例化和初始化,即分配内存。
		yourRectangle= new ARectangle(30,40);
		ARectangle hisRectangle=new ARectangle(100,200,0,0);
		/*实例变量和类变量的值看最后的赋值是多少,上面两行可以分别注释,展示效下面一行输出的效果*/
		System.out.println(ARectangle.getArea());
	}

}



public class ARectangle {
	static int width,height,x,y;
	public ARectangle(){
		width =0;
		height=0;
	}
	public ARectangle(int width,int height){
		this.width=width;	//局部变量赋值给局部变量
		this.height=height;
		System.out.println("the rectangle's width is "+width+" and the height is "+height);
	}
	public ARectangle(int width,int height,int x,int y){
		this.width=width;
		this.height=height;
		this.x=x;
		this.y=y;
		System.out.println("the rectangle's width is "+width+" and the height is "+height);

	}
	public static int getArea(){	//刚才不能调用成功的关键在于static
		return width*height;
	}
}

main是静态的方法(也叫类方法),只能调用类方法而不能调用非静态方法(即实例方法),上面的关键在于用静态的main方法调用了非静态的getArea方法。只需要把该方法定义为static的即可
注意: width height都要定义为静态变量,不然只能在这个类用而不能在Test类中使用。


类变量由static修饰,可通过 类名.类变量名引用,也可同下:
实例变量无static ,只能通过 对象名.实例变量引用
类方法与实例方法同理:
实例方法可以调用实例变量和类变量,且可以操作其他实例方法和类方法,
类方法只能调用类变量不能调用实例变量,且只能操作类方法。


public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//封装了实例变量和类变量被引用的程序
		MyLadder aLadder = new MyLadder(3.0f,10.0f,20);
		MyLadder bLadder = new MyLadder(2.0f,3.0f,10);
		MyLadder.bottomSide=200;//类名引用类变量
		System.out.println("aLadder对象的下底为:"+aLadder.getBottomSide());
		System.out.println("bLadder对象的下底为:"+bLadder.getBottomSide());
		bLadder.setBottomSide(60);//对象名引用类变量
		System.out.println("aLadder对象的下底为:"+aLadder.getBottomSide());
		System.out.println("bLadder对象的下底为:"+bLadder.getBottomSide());
	}

}



public class MyLadder {
	/*数据成员包括常量,实例变量和类变量,所以在对象引用数据成员时就会有所区别
	 * 一个类通过使用new可以创建多个不同的对象,这些对象被分配不同的内存空间。
	 * 换句话说,不同对象的实例变量将分别属于相应的内存空间,
	 * 这些实例变量是通过对象名.实例变量 被引用
	 *类变量由说static修饰,他是由同类的所有对象共有,即同类的所有对象的这个类变量
	 *都能分配分配相同的一块儿内存空间,改变其中一个对象的这个类变量会影响其他对象
	 *的这个类变量。因此,类变量可以通过 对象名.类变量名 引用,也可以通过 类名.类变量名 引用。
	 */
	/*该类封装了Ladder累,表示实例变量和类变量的引用异同
	 * 两个MyLadder对象共有一个bottomSide类变量
	 */
	private float aboveSide,height;//实例变量
	public static float bottomSide;//类变量
	public MyLadder(float x,float y,float h){
		aboveSide=x;
		bottomSide=y;
		height=h;
	}
	public float getBottomSide(){
		return bottomSide;
	}
	public void setBottomSide(float b){
		bottomSide =b;
	}
}

继承

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值