一、Java基础练习题
1、下载JDK,并安装,然后配置环境变量path以及classpath,编写HelloWorld程序输出以下学生信息:
2、学号,姓名,年龄,性别,家庭住址等。
3、建议初学者,针对如上练习多写一遍。
下载JDK,并安装,然后配置环境变量path以及classpath,编写HelloWorld程序输出以下学生信息:学号,姓名,年龄,性别,家庭住址等。
-
public
class
HelloWorld {
-
public static void main(String[] args) {
-
System.
out.println(
"学号 = 100000");
-
System.
out.println(
"姓名 = 动力节点");
-
System.
out.println(
"年龄 = 9");
-
System.
out.println(
"性别 = 男");
-
System.
out.println(
"住址 = 北京大兴经济技术开发区大族企业湾10号楼A座");
-
}
-
}
二、Java标识符与关键字练习题
● 熟记标识符的命名规则和规范。
● 分析以下单词哪些是合法的标识符,哪些不合法:
1、myName,字,My_name,Points,$points,_sys_ta,OK,_23b,_3_
2、_3_(合法)
3、_23b(合法)
4、OK(合法)
5、_sys_ta(合法)
6、$points(合法)
7、Points(合法)
8、My_name(合法)
9、字(合法)
10、myName(合法
11、#name,25name,class,&time,if,Hello World
12、Hello World(不合法:标识符不能含有空格)
13、if(不合法:关键字不能做标识符)
14、&time(不合法:标识符不能有&)
15、class(不合法:关键字不能做标识符)
16、25name(不合法:标识符不能以数字开始)
17、#name(不合法:标识符不能有#)
三、 Java变量练习题
查阅相关资料,使用Java中的八种基本数据类型完成变量的声明,给每一个变量赋值,并且重新赋值,并将所有变量输出到控制台。
-
public
class
Chapter02 {
-
public static void main(String[] args) {
-
byte b =
127;
-
short s =
32767;
-
int i =
2147483647;
-
long l =
900L;
-
float f =
3.4f;
-
double d =
3.14;
-
boolean b1 =
true;
-
char c =
'a';
-
-
System.
out.println(b);
-
System.
out.println(s);
-
System.
out.println(i);
-
System.
out.println(l);
-
System.
out.println(f);
-
System.
out.println(d);
-
System.
out.println(b1);
-
System.
out.println(c);
-
-
b =
1;
-
s =
1;
-
i =
1;
-
l =
1L;
-
f =
1.0f;
-
d =
1.0;
-
b1 =
false;
-
c =
'中';
-
-
System.
out.println(b);
-
System.
out.println(s);
-
System.
out.println(i);
-
System.
out.println(l);
-
System.
out.println(f);
-
System.
out.println(d);
-
System.
out.println(b1);
-
System.
out.println(c);
-
}
-
}
四、Java数据类型练习题
1、short s1 = 1; s1 = s1 + 1;有什么错?
s1是short类型,1是int类型,short和int混合运算的时候short会自动转换为int类型,所以s1 + 1编译器检测出是int类型,int类型无法赋值给short类型的变量s1。这样修改:s1 = (short)(s1 + 1);
2、 char类型变量能不能储存一个中文的汉字,为什么?
java中的文字采用unicode编码,一个中文占用2个字节,char类型在java中就是占用两个字节,所以java中的char类型完全可以容纳一个汉字。
3、float f = 1.0有什么错?
1.0字面量被当做double类型处理,大容量double无法赋值给小容量float。这样修改,两种方案:第一种方案是1.0后面添加f/F。第二种方案是强制类型转换:float f = (float)1.0;
4、long a = 2147483648有什么错?
不是long类型存不下2147483648,而是java把2147483648当做int类型来处理,但本身已经超出int类型范围。这样修改:long a = 2147483648L;
5、 int i = 0xffff有问题吗?
没有问题:0xffff以0x开始表示十六进制表示方式,ffff转换成十进制是:65535
6、char c = 65536有问题吗,为什么?
65536已经超出char类型取值范围,不能直接赋值,这样修改:char c = (char)65536;
五、Java运算符练习题
练习以下程序并分析程序的执行结果。
第1题:
-
int x =
10;
-
int a = x+ x++;
-
System.out.
println(
"a =" + a);
-
System.out.
println(
"x =" + x);
-
int b = x + ++x;
-
System.out.
println(
"b =" + b);
-
System.out.
println(
"x =" + x);
-
int c = x + x--;
-
System.out.
println(
"c =" + c);
-
System.out.
println(
"x =" + x);
-
int d = x + --x;
-
System.out.
println(
"d =" + d);
-
System.out.
println(
"x =" + x);
执行结果如下图所示:
第2题:
-
int a =
15;
-
int b =
2;
-
double
c =
2;
-
System.out.
println(a +
"/" + b +
"=" + (a / b));
-
System.out.
println(a +
"%" + b +
"=" + (a % b));
-
System.out.
println(a +
"/" +
c +
"=" + (a /
c));
-
System.out.
println(a +
"%" +
c +
"=" + (a %
c));
执行结果如下图所示:
第3题:
-
boolean x, y, z;
-
int a =
15;
-
int b =
2;
-
x = a > b;
// true;
-
y = a < b;
// false;
-
z = a != b;
// true;
-
System.out.
println(
"x =" + x);
-
System.out.
println(
"y =" + y);
-
System.out.
println(
"z =" + z);
执行结果如下图所示:
第4题:
-
int x;
-
double y;
-
x = (
int)
22.5 + (
int)
34.7;
-
y = (
double) x;
-
System.
out.println(
"x = " + x);
-
System.
out.println(
"y = " + y);
执行结果如下图所示:
第5题:
-
int i =
5;
-
int j =
5;
-
int m =
5;
-
int n =
5;
-
i++;
-
j = j +
1;
-
m--;
-
n = n -
1;
-
System.out.
println(i);
-
System.out.
println(i++);
-
System.out.
println(++i);
-
System.out.
println(i--);
-
System.out.
println();
-
System.out.
println(j);
-
System.out.
println(j++);
-
System.out.
println(j--);
-
System.out.
println(--j);
-
System.out.
println();
-
System.out.
println(m);
-
System.out.
println(n);
执行结果如下图所示:
第6题:
-
int i =
0;
-
int j =
0;
-
System.out.
println(i);
-
System.out.
println(j);
-
i++;
-
++j;
-
System.out.
println(i);
-
System.out.
println(j);
-
System.out.
println(
"--------------------------");
-
System.out.
println(i++);
-
System.out.
println(++j);
-
System.out.
println(
"--------------------------");
-
System.out.
println(i);
-
System.out.
println(j);
执行结果如下图所示:
六、Java控制语句练习题
编写java程序,用循环结构打印如下的数值列表:
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000
-
public
class
Test {
-
public static void main(String[] args) {
-
for(
int i=
1 ; i<=
5 ; i++){
-
int temp = i;
-
for(
int j=
1; j<=
4 ; j++){
-
System.
out.print(temp +
" ");
-
temp *=
10;
-
}
-
System.
out.println();
-
}
-
}
-
}
● 打印2到10000的所有素数,每行显示8个素数。
-
public
class Test {
-
public
static
void main(
String[] args) {
-
int count =
0;
-
for(
int i=
2;i<=
10000;i++){
-
boolean isPrimeNum =
true;
-
for(
int j=
2;j<i;j++){
-
if(i % j ==
0){
-
isPrimeNum =
false;
-
break;
-
}
-
}
-
if(isPrimeNum){
-
System.out.
print(i +
" ");
-
count++;
-
if(count ==
8){
-
System.out.println();
-
count =
0;
-
}
-
}
-
}
-
}
-
}
● 编写程序,计算5的阶乘。
-
public
class
Test {
-
public static void main(String[] args) {
-
int result =
1;
-
for(
int i=
1; i<=
5; i++){
-
result *= i;
-
}
-
System.
out.println(
"5的阶乘 = " + result);
-
}
-
}
● 控制台输入年龄,根据年龄输出不同的提示。
-
public
class Test {
-
public
static
void main(
String[] args) {
-
java.util.Scanner s =
new java.util.Scanner(System.in);
-
System.out.
print(
"请输入年龄:");
-
int age = s.nextInt();
-
if(age <
0 || age >
150){
-
throw
new
RuntimeException(
"对不起,年龄值不合法!");
-
}
-
String grade =
"你是老年人";
-
if(age <
5){
-
grade =
"可爱的小baby";
-
}
else
if(age <
10){
-
grade =
"你还是个小屁孩";
-
}
else
if(age <
15){
-
grade =
"小少年,不错哦";
-
}
else
if(age <
18){
-
grade =
"你是个青少年";
-
}
else
if(age <
35){
-
grade =
"你是个青年人";
-
}
else
if(age <
50){
-
grade =
"你已是中年人";
-
}
-
System.out.println(grade);
-
}
-
}
● 编写程序输出下图菱形。
-
public
class
Test {
-
public static void main(String[] args) {
-
int lay =
9;
-
for (
int m =
1; m <= (lay +
1) /
2; m++){
-
for (
int b =
1; b <= (lay +
1) /
2 - m; b++){
-
System.
out.print(
" ");
-
}
-
for (
int c =
1; c <= m *
2 -
1; c++) {
-
System.
out.print(
"*");
-
}
-
System.
out.println();
-
}
-
for (
int d = (lay +
1) /
2 -
1; d >=
1; d--){
-
for (
int b =
1; b <= (lay +
1) /
2 - d; b++){
-
System.
out.print(
" ");
-
}
-
for (
int c = (lay +
1) /
2 - d; c <= (lay +
1) /
2 -
2 + d; c++){
-
System.
out.print(
"*");
-
}
-
System.
out.println();
-
}
-
}
-
}
● 篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度是0.1米。
-
public
class
Test {
-
public static void main(String[] args) {
-
double height =
5.0;
-
int count =
0;
-
while(height >
0.1){
-
height *=
0.3;
-
count++;
-
}
-
System.
out.println(
"弹起次数 = " + count);
-
}
-
}
七、Java方法练习题
● 使用递归方式计算N的阶乘。
-
public
class
Test {
-
public static void main(String[] args) {
-
int n =
5;
-
int result = factorial(n);
-
System.
out.println(n +
"的阶乘 = " + result);
-
}
-
-
public static int factorial(int n) {
-
if(n ==
1){
-
return
1;
-
}
-
return n * factorial(n -
1);
-
}
-
}
● 编写程序,模拟用户登录功能,程序开始运行时先在DOS命令窗口中初始化登录页面,提醒用户输入用户名和密码,当用户输入用户名为admin,密码为123的时候登录成功,打印欢迎信息,当用户输入的用户名和密码不正确打印错误提示信息并退出系统。对于以上的程序大家尽可能定义相关方法来完成,不要将所有代码都放到main方法当中。
-
public
class
Test {
-
public static void main(String[] args) {
-
//初始化界面
-
initUI();
-
}
-
public static void login(String username, String password) {
-
if(
"admin".
equals(username) &&
"123".
equals(password)){
-
System.
out.println(
"登录成功,欢迎"+username+
"回来!");
-
}
else{
-
System.
out.println(
"对不起,用户名或者密码错误!");
-
}
-
}
-
public static void initUI() {
-
java.util.Scanner s =
new java.util.Scanner(System.
in);
-
System.
out.println(
"欢迎使用本系统,请登录!");
-
System.
out.print(
"用户名:");
-
String username = s.next();
-
System.
out.print(
"密码:");
-
String password = s.next();
-
//登录
-
login(username, password);
-
}
-
}
● 通过方法重载、方法重复利用完成以下功能:
1、定义一个方法,该方法可以选出2个int类型较大的数据,返回值是较大的数据。
2、再定义一个方法,该方法可以选出3个int类型中较大的数据,返回值是较大的数据。
3、要求使用方法重载机制,要求代码体现出重复利用。
main方法中编写程序进行测试。
-
public
class
Test {
-
public static void main(String[] args) {
-
System.
out.println(getBiger(
10,
20));
-
System.
out.println(getBiger(
5,
6,
4));
-
}
-
public static int getBiger(int a , int b){
-
return a > b ? a : b;
-
}
-
public static int getBiger(int a , int b , int c){
-
return getBiger(a , b) > c ? getBiger(a , b) : c;
-
}
-
}
八、 Java面向对象练习题
●设计日期类,每个日期对象都可以描述年月日信息。
-
public
class
Date {
-
int
year;
-
int
month;
-
int
day;
-
}
● 设计男人类,每个男人都有身份证号、姓名、性别、女人。设计女人类,每个女人都有身份证号、姓名、性别、男人。
-
public
class Man {
-
String idCard;
-
String name;
-
boolean sex;
-
Woman gril;
-
}
-
public
class Woman {
-
String idCard;
-
String name;
-
boolean sex;
-
Man boy;
-
}
● 设计银行账户类,每个账户都有账号、密码、余额等信息。
-
public
class Account {
-
String actno;
-
String password;
-
double balance;
-
}
● 设计微信账号类,每个微信账号都有微信号、手机号、昵称等信息。
-
public
class WebChatAccount {
-
String webChatId;
-
String phone;
-
String nickname;
-
}
九、Java对象的创建和使用练习题
● 定义丈夫类Husband和妻子类Wife,丈夫类的属性包括:身份证号,姓名,出生日期,妻子。妻子类的属性包括:身份证号,姓名,出生日期,丈夫。分别给这两个类提供构造方法(无参数构造方法和有参数构造方法都要提供),编写测试程序,创建丈夫对象,然后再创建妻子对象,丈夫对象关联妻子对象,妻子对象关联丈夫对象,要求能够输出这个“丈夫对象”的妻子的名字,或者能够输出这个“妻子对象”的丈夫的名字。要求能够画出程序执行过程的内存图。并且要求在程序中演示出空指针异常的效果。
-
public
class Husband {
-
String idCard;
-
String name;
-
String birth;
-
Wife w;
-
public Husband() {
-
super();
-
}
-
public Husband(
String _idCard,
String _name,
String _birth) {
-
super();
-
this.idCard = _idCard;
-
this.name = _name;
-
this.birth = _birth;
-
}
-
}
-
public
class Wife {
-
String idCard;
-
String name;
-
String birth;
-
Husband h;
-
public Wife() {
-
super();
-
}
-
public Wife(
String _idCard,
String _name,
String _birth) {
-
super();
-
this.idCard = _idCard;
-
this.name = _name;
-
this.birth = _birth;
-
}
-
}
-
public
class
Test {
-
public static void main(String[] args) {
-
Husband zhangsan =
new Husband(
"11111" ,
"zhangsan" ,
"2020-10-01");
-
Wife lisi =
new Wife(
"22222" ,
"lisi" ,
"2020-10-02");
-
zhangsan.w = lisi;
-
lisi.h = zhangsan;
-
System.
out.println(zhangsan.name +
"的妻子是" + zhangsan.w.name);
-
System.
out.println(lisi.name +
"丈夫是" + lisi.h.name);
-
zhangsan.w =
null;
-
lisi.h =
null;
-
System.
out.println(zhangsan.name +
"的妻子是" + zhangsan.w.name);
-
System.
out.println(lisi.name +
"丈夫是" + lisi.h.name);
-
}
-
}
执行结果如下图所示:
转载:https://blog.csdn.net/bjpowernode_com/article/details/110925238