构造方法的特点
-
构造方法没有返回值,而不是返回值是void
-
构造方法的方法名和类名是一致的
-
构造方法的目的就是实例化对象(将类进行实例化,创建存放对象的空间)
-
构造方法可以通过new进行调用
-
一个类里面存在默认的构造方法(无参数),当这个类里面存在他的重构方法,那么默认的无参构造就会消失
3:什么是方法的重载,谈谈自己的理解
方法的重构也就是重新构造一个方法,这个新的方法要满足,同名不同参数(参数的类型或者个数不同,顺序不同)和原来的方法,只要传递的参数能够直接的定位到一个方法就可以构成重构,不看返回值,不看参数名字
4:静态方法与成员方法的区别?
静态方法是属于所属的类的,也就是说只要这个类存在静态方法就存在,而成员方法是通过默认构造方法,将其放到对象里面,在类中的
成员方法不存在,只是一个模版一个设想,调用成员方法需要通过声明引用,并且实例化对象,开辟存放对象的空间,通过引用指向对象,然后通过对象调用成员方法,而静态方法可以直接通过类名进行调用,不需要实例化对象,因为其在类中存在,是否能够调用,怎么去掉用问题的关键点在看方法是否存在,由此就可以解释:==实例方法可以直接调用静态方法(用存在的去掉用存在的),静态方法不可以直接调用实例方法(用存在的去调用不存在的)==实例方法存放在对象里面,所以需要通过找到地址找到对象才可以进行调用
5:什么是匿名对象?什么情况下使用匿名对象?
匿名对象也就是没有名字,引用,只是开辟了个位置存放对象,没有办法访问调用,使用过一次以后就会自动的消除存放对象的空间,清理缓存
6:什么是引用的传递?
引用的传递也就是值传递,也就是地址的传递,一次实例化对象开辟空间存放对象,引用的传递(起别名)
Person per = new Person();
Person per1 = per;
per和per1都指向同一个对象
7:什么是类和对象,他们的关系是什么?
类是对象的模版和抽象,对象是类的具体和实现化
8:如何实例化类?构造方法的作用?
通过new来进行实例化类,开辟存放对象的空间,构造方法作用是实例化类
package newstart;
import java.io.Console;
/**
* // 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
// 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
// 因为153=1的三次方+5的三次方+3的三次方
*
* // 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*
* //输入两个正整数m和n,求其最大公约数和最小公倍数。
*
* //使用双层循环完成下面图形
// *
// ***
// *****
// *******
// *********
// ***********
*/
import java.util.Scanner;
public class text {
public static void main(String[] args) {
// a1();
// a2();
// a3();
// a4();
// a5();
// a6();
// a7();
// a8();
// a9();
// a10();
// a11();
// a12();
// a13();
// a14();
// a15();
// a16();
// a17();
// a18();
}
//判断是否是素数
static boolean ishas(int i) {
boolean s = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
s = false;
}
}
return s;
}
//题目:判断101-200之间有多少个素数,并输出所有素数。
public static void a1() {
System.out.println("输出所有的素数:");
int num = 0;
for (int i = 101; i < 200; i++) {
if (ishas(i)) {
num += 1;
System.out.println(i);
}
}
System.out.print("素数的个数是" + num + "个");
}
//打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数
//其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
// 因为153=1的三次方+5的三次方+3的三次方
public static void a2() {
System.out.println("水仙花数是:");
for (int i = 100; i < 999; i++) {
int g = i % 10;
// 刚刚是从后面来看直接看十位数的数字,例如153,直接看53,而不是看15,正确的看15取得余数正好是5是十位的数字
int s = i / 10 % 10;
int b = i / 100;
// System.out.println("百"+g);
// System.out.println("个"+b);
if (i == b * b * b + s * s * s + g * g * g) {
// System.out.println("十"+s);
System.out.println(i);
}
}
}
//题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
public static void a3() {
// 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
System.out.println("请输入一个数:");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.println(num + "=");
for (int i = 2, x = num; x != 1;) {
if (x % i != 0) {
i++;
} else {
x /= i;
// 判断是否x和i是否相等,等于一就不需要进行再次计算
System.out.print(i + (x == 1 ? "" : "*"));
}
}
}
//使用双层循环完成下面图形
//*
//***
//*****
//*******
//*********
//***********
public static void a4() {
int a = 6;// a是行数
for (int i = 0; i < a; i++) {
for (int j = 0; j < a - i; j++) {
// j控制空格个数 不是a-i 就不是三角形
System.out.print(" ");
}
for (int c = 1; c <= 2 * (i + 1) - 1; c++) {// c不等于1 三角形就没有尖
System.out.print("*");
}
System.out.println();
}
}
//最大公约数和最小公倍数
// 大的用小的算
// 小的用大的算
public static void a5() {
System.out.println("输入两个正整数:");
Scanner scan = new Scanner(System.in);
int o = scan.nextInt();
int t = scan.nextInt();
for (int i = o > t ? t : o; i > 1; i--) {
if (o % i == 0 && t % i == 0) {
System.out.println("最大公约" + i);
break;
}
}
for (int i = o > t ? o : t; i <= o * t; i++) {
if (i % o == 0 && i % t == 0) {
System.out.println("最小公倍" + i);
break;
}
}
}
// 已知某年某月某日,判断这一天是这一年的第几天?
public static void a6() {
System.out.println("請輸入年月日:");
Scanner scan = new Scanner(System.in);
int nian = Integer.parseInt(scan.nextLine());
int yue = Integer.parseInt(scan.nextLine());
int ri = Integer.parseInt(scan.nextLine());
boolean is = true;
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
is = true;
} else {
is = false;
}
switch (yue) {
case 1:
if (ri > 1 && ri < 31) {
System.out.println("這是一年中22的第" + ri + "天");
} else {
System.out.println("無效");
}
break;
case 2:
int d;
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
if (ri > 1 && ri < 29) {
d = 31 + 29;
System.out.println("這是一p年中的第" + d + "天");
} else {
System.out.println("無效");
}
} else {
if ((ri > 1 && ri < 28)) {
d = 31 + 28;
System.out.println("這是一年中的第" + d + "天");
} else {
System.out.println("無效");
}
}
break;
case 3:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 31 + 29 + ri;
System.out.println("這是一年中的" + a + "天");
} else {
int a = 31 + 28 + ri;
System.out.println("這是一年中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 4:
if (ri > 1 && ri < 30) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 2 * 31 + 29 + ri;
System.out.println("這是一年中的4第" + a + "天");
} else {
int a = 2 * 31 + 28 + ri;
System.out.println("這是一年中s2的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 5:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 30 + 2 * 31 + 29 + ri;
System.out.println("這是一年5中的第" + a + "天");
} else {
int a = 30 + 31 + 28 + ri;
System.out.println("這是一年d中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 6:
if (ri > 1 && ri < 30) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 30 + 3 * 31 + 29 + ri;
System.out.println("這是一年6中的第" + a + "天");
} else {
int a = 30 + 3 * 31 + 28 + ri;
System.out.println("這是一f年中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 7:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 2 * 30 + 3 * 31 + 29 + ri;
System.out.println("這是一年7中的第" + a + "天");
} else {
int a = 2 * 30 + 3 * 31 + 28 + ri;
System.out.println("這是一w年中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 8:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 2 * 30 + 4 * 31 + 29 + ri;
System.out.println("這是一年8中的第" + a + "天");
} else {
int a = 2 * 30 + 4 * 31 + 28 + ri;
System.out.println("這是一年e中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 9:
if (ri > 1 && ri < 30) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 2 * 30 + 5 * 31 + 29 + ri;
System.out.println("這是一年中9的第" + a + "天");
} else {
int a = 2 * 30 + 5 * 31 + 28 + ri;
System.out.println("這是一年中r的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 10:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 3 * 30 + 5 * 31 + 29 + ri;
System.out.println("這是一年中01的第" + a + "天");
} else {
int a = 2 * 30 + 5 * 31 + 28 + ri;
System.out.println("這是一t年中的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 11:
if (ri > 1 && ri < 30) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 3 * 30 + 6 * 31 + 29 + ri;
System.out.println("這是11一年中的第" + a + "天");
} else {
int a = 3 * 30 + 6 * 31 + 28 + ri;
System.out.println("這是一年中y的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
case 12:
if (ri > 1 && ri < 31) {
if (nian % 4 == 0 && (nian % 100 == 0) || (nian % 400 == 0)) {
int a = 4 * 30 + 6 * 31 + 29 + ri;
System.out.println("這是一12年中的第" + a + "天");
} else {
int a = 4 * 30 + 6 * 31 + 28 + ri;
System.out.println("這是一年中u的第" + a + "天");
}
} else {
System.out.println("無效");
}
break;
default:
break;
}
}
// 输出9*9口诀表
// 双层循环
// 双层先执行里面的循环体,执行后,执行外层
/**
* 第一层循环 第二层循环是第一个数字 i行数 j列数 j<i+1(每一行写的式子和行数一致)
*/
public static void a7() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j < i + 1; j++) {
System.out.print(j + "*" + i + "=" + j * i + " ");
}
System.out.println();
}
}
// 打印出如下图案(菱形)
public static void a8() {
// 打印出如下图案(菱形)
// i代表行数
int a = 6;
for (int i = 0; i < a; i++) {
// 随着行数的增加不断变短
for (int j = 1; j < 2 * a - i; j++) {
System.out.print("-");
}
for (int c = 2; c < 2 * i - 1; c++) {
System.out.print("*");
}
System.out.println();
}
for (int i = a; i > 0; i--) {
// i代表行数
for (int j = 1; j < 2 * a - i; j++) {
System.out.print("-");
}
// 代表的小星星越来越少
for (int c = 2; c < 2 * i - 1; c++) {
System.out.print("*");
}
System.out.println();
}
}
// 使用嵌套循环语句,打印:
// 0+0=0 0+1=1 0+2=2 0+3=3
// 1+0=1 1+1=2 1+2=3 1+3=4
// 2+0=2 2+1=3 2+2=4 2+3=5
// 3+0=3 3+1=4 3+2=5 3+3=6
public static void a9() {
int a = 3;
for (int i = 0; i <= a; i++) {
for (int j = 0; j <= a; j++) {
System.out.print(i + "+" + j + "=" + (i + j) + " ");
}
System.out.println();
}
}
// 打印图形(要求打印出10行如下图)
// a
// b c d
// e f g h i
// 第一行打印的空格最多,然后随即减少空格
public static void a10() {
char ch = 'a';
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2 - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i + 1; j++) {
System.out.print(ch++);
}
System.out.println();
}
}
// 编程实现百钱买百鸡问题
// 公鸡3元一只,母鸡2元一只,小鸡0.5元一只,共有100元,问能买多少只鸡?。
public static void a11() {
int g;
int m;
int x;
// int num =0;
for (g = 1; g < 34; g++) {
for (m = 1; m < 50; m++) {
for (x = 1; x < (100 - g - m); x++) {
if ((g * 3 + m * 2 + x * 0.5 == 100)) {
System.out.println("公鸡购买" + g + "只");
System.out.println("母鸡购买" + m + "只");
System.out.println("小鸡购买" + x + "只");
// num +=1;
int com = g + m + x;
System.out.println("一共可以购买" + com + "只鸡");
// System.out.println("一共可以有"+num +"种选择");
}
}
}
}
}
// 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public static void a12() {
Scanner scan = new Scanner(System.in);
int o = Integer.parseInt(scan.nextLine());
int count = 0;
for (int i = o; i != 0; i /= 10, count++) {
System.out.print(i % 10);
}
System.out.println("你输入的数的位数为:" + (count));
}
// 檢查素數
public static boolean a13(int num) {
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 寻找这样的素数,它的翻转数仍然是素数(73和37)
public static void a14() {
for (int i = 10; i < 100; i++) {
if (a13(i) && a13(i % 10 * 10 + i / 10)) {
System.out.print(i + " ");
}
}
}
// 获取前两个月的数量
public static int a15(int month) {
if (month <= 2) {
return 1;
} else {
return a15(month - 1) + a15(month - 2);
}
}
// 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
// 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
// 问每个月的兔子总数为多少?
// 提示: 兔子的规律为数列1,1,2,3,5,8,13,21.... 。后一项为前两项之和
public static void a16() {
for (int i = 1; i < 10; i++) {
System.out.print(a15(i) + " ");
}
}
public static void a17() {
// 一个偶数总能表示为两个素数之和。 试在1000以内验证之
for (int i = 4; i < 1000; i += 2) {
for (int j = 2; j < i; i++) {
if (a13(j) && a13(i - j)) {
System.out.print(i + "=" + j + "+" + (i - j));
}
}
}
}
}