代码分析:
第一个:分析如下代码,判断哪行报错,并说出报错原因
class Demo{
final int a = 10;
}
class Test{
public static void main(String[] args) {
Demo d = new Demo();
d = new Demo();
d.a = 20;//无法为最终变量a分配值
}
}
第二个:分析如下代码,判断哪行报错,并说出报错原因
class Demo{
int a = 10;
}
class Test{
public static void main(String[] args) {
final Demo d = new Demo();
d = new Demo();//无法为最终变量d分配值
d.a = 20;
}
}
第三个:分析如下代码,判断哪行报错,并说出报错原因
class Demo{
final int a = 10;
}
class Test{
public static void main(String[] args) {
final Demo d = new Demo();
d = new Demo();//无法为最终变量d分配值
d.a = 20;//无法为最终变量a分配值
}
}
第四个:分析如下代码,判断哪行报错,并说出报错原因
class Demo{
int a = 10;
}
class Test{
public static void main(String[] args) {
Demo d = new Demo();
d = new Demo();
d.a = 20;
}
}
没错误啊,感觉没啥毛病啊
第五个:分析如下代码,判断哪行报错,并说出报错原因
class Demo{
final int a;//常量不属于任何一个对象,可以调用,但不能被赋值.并且常量在定义的时候就要赋值
}
class Test{
public static void main(String[] args) {
Demo d = new Demo();
d = new Demo();
d.a = 20;//无法为最终变量a分配值
}
}
--------------------------------------------------------------------
1、设计:
* 动物类:姓名,年龄,吃饭,睡觉。
* 猫类(捉老鼠)和狗类(看家)
* 动物培训接口:跳高
* 会跳高的猫
/*
设计:
* 动物类:姓名,年龄,吃饭,睡觉。
* 猫类(捉老鼠)和狗类(看家)
* 动物培训接口:跳高
* 会跳高的猫
*/
class Demo03
{
public static void main(String[] args)
{
//猫类测试
Cat cat = new Cat();
cat.sleep();
cat.highJump();
cat.catchMouse();
System.out.println("*********************************");
//狗类测试
Dog dog = new Dog();
dog.eat();
dog.lookHome();
}
}
//动物类
class Animal
{
String name;
int age;
public void eat()
{
System.out.println("我是一只小动物,我要吃饭饭");
}
public void sleep()
{
System.out.println("我是一只小动物,我要睡觉觉");
}
}
//猫类
class Cat extends Animal implements Train
{
public void catchMouse()
{
System.out.println("我是一只小猫猫,我要捉老鼠");
}
public void highJump()
{
System.out.println("我是一只小猫猫,我会跳高哦");
System.out.println("不要问我为什么那么优秀,因为我偷偷上了补习班");
}
}
//狗类
class Dog extends Animal
{
public void lookHome()
{
System.out.println("我是一只小狗狗,我要看家");
}
}
//培训接口
interface Train
{
public abstract void highJump();
}
2、/*现有两种
OldPhone NewPhone; 两个类都有call() sendMessage() 方法(考虑向上抽取一个父类);
已知接口IPlay中有一个方法 playGame(),NewPhone添加玩游戏的功能;
要求: 分别测试OldPhone和NewPhone的两个方法,再测试新手机palyGame()的方法.
*/
class Demo04
{
public static void main(String[] args)
{
//测试旧手机类
OldPhone op = new OldPhone();
op.call();
op.sendMessage();
System.out.println("*************************");
//测试新手机类
NewPhone np = new NewPhone();
np.call();
np.sendMessage();
np.playGame();
}
}
//手机类
class Phone
{
public void call()
{
System.out.println("我是一个手机,我可以打电话");
}
public void sendMessage()
{
System.out.println("我是一个手机,我可以发短信");
}
}
//旧手机类
class OldPhone extends Phone
{
}
//新手机类
class NewPhone extends Phone implements IPlay
{
public void playGame()
{
System.out.println("我可以玩游戏咯");
}
}
//接口IPlay
interface IPlay
{
public abstract void playGame();
}
-------------------------------------------------------------------------
1、/*分析以下需求,并用代码实现:
(1)定义数字字符串数组{"010","3223","666","7890987","123123"}
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出
(3)如:010 是对称的,3223 是对称的,123123 不是对称的
(4)最终打印该数组中对称字符串的个数
提示:循环获取字符串的每一个字符,依次比较第一个和最后一个,第二个和倒数第二个。。。
*/
class Demo05
{
public static void main(String[] args)
{
String[] str = {"010","3223","666","7890987","123123"};
int count = 0;
for (int n = 0; n < str.length; n++)
{
char[] ch = str[n].toCharArray();//将每一个字符串转为字符数组ch
int n1,n2;
for (n1 = 0,n2 = ch.length-1; n1 < n2 ; n1++,n2--)
{
if (ch[n1] != ch[n2])
{
break;
}
}
if (n1 >= n2)//010这种是刚好=,3223这种是>
{
count++;
System.out.println("第" + count + "个对称字符串为:" + str[n]);
}
}
System.out.println("一共有" + count + "个对称字符串");
}
}
2./*分析以下需求,并用代码实现:
(1)从键盘循环录入录入一个字符串,输入"end"表示结束
(2)将字符串中大写字母变成小写字母,小写字母变成大写字母,其它字符用"*"代替,并统计字母的个数
举例:
键盘录入:Hello12345World
输出结果:hELLO*****wORLD
总共10个字母
*/
import java.util.Scanner;
class Demo06
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while (true)
{
System.out.println("请录入一个字符串(录入end结束程序):");
String str = sc.nextLine();
if (str.equals("end"))
{
break;
}
int count = 0;
char[] chs = str.toCharArray();
for (int n = 0; n < chs.length; n++)
{
char ch = chs[n];
if (ch >= 'A' && ch <= 'Z')
{
count++;
ch = (char)(ch + 32);
}
else if (ch >= 'a' && ch <= 'z')
{
count++;
ch = (char)(ch - 32);
}
else
{
ch = '*';
}
System.out.print(ch);
}
System.out.println();
System.out.println("总共" + count + "个字母");
}
}
}
3、/*
键盘录入一个字符串,
统计该字符串中的大写字母、小写字母、数字字符和其他字符分别有多少个
例如,键盘录入abcABCD12345!@#$%&,
输出结果为:小写字母有3个,大写字母有4个,数字字符有5个,其他字符有6个。
*/
import java.util.Scanner;
class Demo07
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
char[] chs = str.toCharArray();
int upperCaseCount = 0;//大写字母
int lowerCaseCount = 0;//小写字母
int digitCount = 0;//数字
int otherCount = 0;//其他字符
for (int n = 0; n < chs.length; n++)
{
char ch = chs[n];
if (ch >= 'A' && ch <= 'Z')
{
upperCaseCount++;
}
else if (ch >= 'a' && ch <= 'z')
{
lowerCaseCount++;
}
else if (ch >= '0' && ch <= '9')
{
digitCount++;
}
else
{
otherCount++;
}
}
System.out.println("小写字母有" + lowerCaseCount + "个,大写字母有" + upperCaseCount + "个,数字字符有" + digitCount + "个,其他字符有" + otherCount + "个。");
}
}
4、/*
定义一个方法,功能如下:给定一个数组,转换成一个字符串
例如:数组为int[] arr = {1, 2, 3},字符串为[1, 2, 3]
*/
class Demo08
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3};
String str = toString(arr);
System.out.println(str);
}
public static String toString(int[] arr)
{
String str = "[";
for (int n = 0; n < arr.length; n++)
{
if (n == arr.length-1)
{
str += arr[n] + "]";
break;
}
str += arr[n] + ", ";
}
return str;
}
}
5、/*定义一个方法,功能如下:给定一个字符串,返回该字符串的反转形式
例如:字符串为abcdef,返回结果为fedcba
*/
class Demo09
{
public static void main(String[] args)
{
String str = "abcdef";
System.out.println(reverseStr(str));
}
public static String reverseStr(String s1)
{
char[] chs = s1.toCharArray();
String s2 = "";
for (int n1 = 0,n2 = chs.length-1; n1 < n2; n1++,n2--)
{
char temp = chs[n1];
chs[n1] = chs[n2];
chs[n2] = temp;
}
for (int n = 0; n < chs.length; n++)
{
s2 += chs[n];
}
return s2;
}
}
-----------------------------------------------------------------------
3、/*定义两个类Dog,SmallDog,SmallDog继承Dog
说明一:关于Dog
两个属性,狗的名字(dogName,String),狗的年龄(dogAge,int)
一个方法,dogWalk(),打印一句话简单描述狗走路的样子
一个构造方法,无参数,在此构造方法中初始化dogName,dogAge
说明二:关于SmallDog
继承Dog,不添加任何属性和方法
最后,在测试类中的main方法中生成SmallDog类的对象,
访问属性dogName和dogAge,并打印出他们的值;调用dogWalk(),看看效果
*/
class Demo10
{
public static void main(String[] args)
{
SmallDog sd = new SmallDog();
System.out.println("dogName:" + sd.dogName);
System.out.println("dogAge:" + sd.dogAge);
sd.dogWalk();
}
}
//狗类
class Dog
{
String dogName;
int dogAge;
public void dogWalk()
{
System.out.println("大家好,我是一只狗狗,我正迈着六亲不认的步伐散着步");
}
public Dog()
{
dogName = "GouPengZi";
dogAge = 3;
}
}
//小狗类
class SmallDog extends Dog
{
}
4、/*在第1题的基础做修改
说明:关于SmallDog
添加两个set方法分别能够设置属性dogName和dogAge的值,
在测试类中的main方法中调用这两个方法为属性设置值,
再次访问这两个属性并打印看看和第二题的打印输出是否相同
重写dogWalk(),打印一句话具体描述小狗走路的样子,
在测试类main方法中调用dogWalk(),看看和第二题中的调用效果是否有变化
*/
class Demo11
{
public static void main(String[] args)
{
SmallDog sd = new SmallDog();
System.out.println("dogName:" + sd.dogName);
System.out.println("dogAge:" + sd.dogAge);
sd.dogWalk();
System.out.println("**************************");
sd.setDogName("XiongLuoLuo");
sd.setDogAge(5);
System.out.println("dogName:" + sd.dogName);
System.out.println("dogAge:" + sd.dogAge);
sd.dogWalk();
}
}
//狗类
class Dog
{
String dogName;
int dogAge;
public void dogWalk()
{
System.out.println("大家好,我是一只狗狗,我正迈着六亲不认的步伐散着步");
}
public Dog()
{
dogName = "GouPengZi";
dogAge = 3;
}
}
//小狗类
class SmallDog extends Dog
{
public void setDogName(String dogName)
{
this.dogName = dogName;
}
public void setDogAge(int dogAge)
{
this.dogAge = dogAge;
}
public void dogWalk()
{
System.out.println("大家好,我是一只小毛狗,我又萌又可爱");
}
}
5、/*定义一个运输类(Transport)和它的两个子类;
汽车类(Vehicle)和飞机类(Airplane)
说明一:关于Transport
两个属性,速度(speed,int)载重量(load,float)
两个get方法,能够取得两个属性的值
一个构造方法,能够初始化这两个属性
一个show()方法,调用俩个get方法,取得两个属性的值并打印
说明二:关于Vehicle(交通工具)
继承Transport
添加两个属性,车轮数(wheels,int),车重量(weight,float)
添加两个get方法,能够取得两个新添加属性的值
一个构造方法,调用父类的构造方法,并且能够初始化新添加的两个属性
一个show()方法,
调用父类的show()方法打印speed和load两个属性,
调用新添加的两个get方法取得wheels和weight属性的值并打印
说明三:关于Airplane
和说明二的要求一致,只要求新添加的两个属性
为发动机类型(enginertype,String)发动机数量(enginers,int)
最后,在测试类main方法中生成汽车类和飞机类的对象
*/
class Demo12
{
public static void main(String[] args)
{
//交通工具测试类
Vehicle v = new Vehicle();
v.show();
System.out.println("************************");
//飞机测试类
Airplane a = new Airplane();
a.show();
}
}
//运输类
class Transport
{
int speed;
float load;
public Transport()
{
speed = 30;
load = 50.2f;
}
public void show()
{
System.out.println("速度为:" + getSpeed());
System.out.println("载重为:" + getLoad());
}
public int getSpeed()
{
return speed;
}
public float getLoad()
{
return load;
}
}
//交通工具类
class Vehicle extends Transport
{
int wheels;
float weight;
public Vehicle()
{
super();
wheels = 8;
weight = 45;
}
public int getWheels()
{
return wheels;
}
public float getWeight()
{
return weight;
}
public void show()
{
super.show();
System.out.println("车轮数为:" + getWheels());
System.out.println("车重量为:" + getWeight());
}
}
//飞机类
class Airplane extends Transport
{
String enginertype;
int enginers;
public Airplane()
{
super();
enginertype = "wakaka";
enginers = 22;
}
public String getEnginertype()
{
return enginertype;
}
public int getEnginers()
{
return enginers;
}
public void show()
{
super.show();
System.out.println("发动机类型为:" + getEnginertype());
System.out.println("发动机数量为:" + getEnginers());
}
}