JAVA基础学习笔记(一)(黑马课程及二哥的Java之路)
文章目录
前言
java基础中需要注意的一些细节
一、数据类型转换与Scanner
主要注意数据类型的转换:
1、自动类型转换:小范围类型的变量可以直接赋值给大范围类型的变量。
2、表达式的自动类型提升:表达式中的最终结果类型是由里面最高的数据类型决定的,最高数据类型是什么,最终的结果的数据类型就是什么
3、强制类型转换:
强制类型转换可能出现数据的失真,小数强制类型转换成整数,丢掉小数部分,保留整数部分。
案例:
获取用户键盘输入的数据:键盘录入需要的程序:Scanner
package com.scanner;
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
//导包:一般不需要我们自己导
//抄写代码,得到一个键盘扫描器对象
Scanner sc=new Scanner(System.in);
//3.开始调用sc的功能,来接受用户通过键盘输入的数据
System.out.println("请您输入您的年龄");
int age=sc.nextInt();
//执行到这,等待用户输入一个整数,只有用户点击的回车键,才会接收到数据
System.out.println("您的年龄是"+age);
System.out.println("请输入您的名字:");
String name=sc.next();
System.out.println(name+"欢迎您进入系统~~");
}
}
二、流程控制
1、分支结构
(1)if 分支
(2)switch分支
使用 switch 分支的几点注意事项
① 表达式类型只能是 byte 、 short 、 int 、 char , JDK5 开始支持枚举, JDK7 开始支持String 、不支持 double 、 float 、 long 。
② case 给出的值不允许重复,且只能是字面量,不能是变量。
③ 正常使用 switch 的时候,不要忘记写 break ,否则会出现穿透现象。
简单来说,switch穿透性的原因是在某一分支中不存在break所导致的,但是在不同case条件但该分支执行内容相同时,可以借助穿透性来简化代码。(多个case块内容相同的情况下,保留一个case块的代码)
2、循环结构
(1)for循环
(idea中编写for循环的小技巧,输入 for i并点击回车)
for循环的应用实例,在某商城的商品展示页面,每个商品的展示代码相同。以及后台管理系统中的表单显示模块。也可以批量的按要求生成数据,比如生成偶数或者奇数。
案例:水仙花数
“水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数”,因为153=1的三次方+5的三次方+3的三次方
public class forDemo {
public static void main (String []args){
int a, sum; //表示100~999
int i, j, k;//分别表示百位、十位、各位
for (a = 100; a <= 999; a++) {
i = a / 100;
j = (a - i * 100) / 10;
k = a - i * 100 - j * 10;
sum = i * i * i + j * j * j + k * k * k;
//java的运算符,立方要这样写,写成i^3这样,是运算不出来的
//如果遇到高次的话可以使用循环算出来
if (sum == a) {
System.out.println(sum);
}
}
}
}
第二种方法是i,j,k分别表示个,十,百位数
public static void main(String args[]) {
int sum;
int i, j, k;//分别表示百位、十位、各位
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (i * 100 + j * 10 + k == sum) {
System.out.println(sum);
}
}
}
}
}
(2)while循环
while 案例:
public class whileDemo {
public static void main(String[] args) {
double peakHeight=8848860;
double paperThickness=0.1;
int count =0;
while(paperThickness<peakHeight) {
paperThickness = paperThickness * 2;
count++;
}
System.out.println("需要折叠多少次"+count);
System.out.println("最终纸张厚度"+paperThickness);
}
}
20240301
(3)do-while循环
应用场景举例:12306的刷票系统,直到检测到有票之后才停止循环,先执行,后判定。
(4)循环结构总结
死循环的三种写法:
为满足停止循环的需要,了解两个跳转关键字
案例
(1)生成随机数(加减法)
生成随机数的方法,在借助random函数时也要注意如何生成指定区间的随机数。
例如生成65~91之间的随机数,需要在区间两端减去65,区间变为(0-26)再加上65
package com.random;
import java.util.Random;
public class randomDemo1 {
public static void main(String[] args) {
//掌握使用random生成随机数
//1、导包
//2、创建一个random对象,用于生成随机数
Random r=new Random();
for (int i=0;i<20;i++) {
int data=r.nextInt(10);
System.out.println(data);
}
System.out.println("------------------");
//将某段代码放到循坏里的快捷办法:
//nextInt只能生成0~n-1之间的数
//如何生成指定区间里的随机数(减加法)
// 生成3~17之间的随机数
for (int j=0;j<20;j++) {
int data2= r.nextInt(15)+3;
System.out.println(data2);
}
}
}
(2)猜数字
需求:
随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中停止游戏
分析:
1、先随机生成一个1-100之间的数据
2、定义一个死循环让用户可以一直猜测
3、在死循环里,每次都提示用户输入一个猜测的数字,并给予不同的反馈。
package com.random;
import java.util.Random;
import java.util.Scanner;
public class randomDemo2 {
public static void main(String[] args) {
//1、先随机生成一个1-100之间的数据
Random r=new Random();
int luckyData=r.nextInt(100)+1;
//2、定义一个死循环让用户可以一直猜测
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("请您输入猜测的数据");
int guessNumber=sc.nextInt();
if(guessNumber>luckyData){
System.out.println("您猜测的值偏大");
}
else if(guessNumber<luckyData){
System.out.println("您猜测的值偏小");
}
else{
System.out.println("猜对了");
break;
}
}
//3、在死循环里,每次都提示用户输入一个猜测的数字,并给予不同的反馈。
}
}
该部分结束:20240303