Java基础
输出
在控制台输出一定的内容,然后换行
System.out.println("hello world");
在控制台输出一定的内容,不换行
System.out.print("hello world");
输出一个空行
System.out.println();
练习
太棒了!
马上就端午了!
回家!
====欢迎登陆海峰学习平台====
转义字符
转义字符 | 描述 | 举例 |
---|---|---|
\" | " | System.out.println("\""); |
\\ | \ | System.out.println("\\"); |
\t | 一个Tab键的距离 | System.out.println("你好\t张三"); |
\n | 换行 | System.out.println("你好\n张三"); |
练习:打印购物清单
代码注释
作用:解释代码,是给程序员看的,方便维护
编译器不处理注释,所以不影响程序的执行效率
提倡代码注释多多益善
分类:
1、单行注释。//
2、多行注释。/* */
3、文档注释。/** */
变量
概念
我有10块钱,吃早饭花6元,还剩多钱?
1、开空间,存储数据
2、CPU运算,更新空间的值
变量:内存中的一块空间
这块空间中存储的值是可以发生的变化的
变量三要素
变量值:空间存储的数据;
变量类型:存储数据的类型,来决定分配多大的空间
变量名:存储空间的别名,快速地找到取出其中的数据
数据类型
**基本数据类型**:
**数值**:整数
int 4个字节 32位 [-2^31-2^31-1]===[-2,147,483,648,2,147,483,647]
byte 1个字节
short 2个字节
long 8个字节
小数/浮点数
float 4个字节
double 8个字节
**字符型**
char 存储单个字符 使用单引号引起来 如 '男' '1' 2个字节
'0'----48 'A'----65 'a'-----97
**布尔型**
boolean 真true 假 false
**引用数据类型**:
字符串
String 存储0-N个字符 使用双引号引起来 如“helloworld”
怎么确定数据类型:
手机号码?字符串;
身份证号号码?字符串;
订单号?字符串
银行存款¥1,234,456元?double
不需要计算,可以存储为字符串。
数据类型的转换
隐式转换,自动转换
条件:数据类型要兼容:(byte、char、short、int、long、float、double),小转大
强制类型转换 (数据类型) 变量
条件:大转小
变量名
命名规范:
1)只能使用$,字母,数字,_,不能以数字开头
2)不能使用关键字。public class static void String
3) 要见名知意 age name score
4)使用驼峰法(Camel命名法),第一个单词首字母小写,其后每个单词首字母大写:stuJavaScore
5)区分大小写 age Age是两个不同的变量
变量的使用
1、申请空间(声明):数据类型 变量名;
int money;
double score;
2、存储数据(赋值)
money = 10;
可以合成一步:数据类型 变量名=值;
String name="王明";
boolean flag=true;
3、使用变量
System.out.println(name);
注意:变量必须先声明,后赋值,再使用。
练习:
输出MP3的数据:
品牌:漫步者
价格:299.9
颜色:白
库存:100
是否首发:false
输出某个学生的信息
姓名:王丽
性别:女
身高:165.8
年龄:18
常住地是否是西安?true
常量
概念
常量:内存中的一块空间,空间中存储的数据不能改变
常量的使用
语法:final 数据类型 变量名=值;
命名规则:全部用大写,单词之间用_做分隔,如USER_ROLE_VIP
字面常量:1,234,'a',"abc",false
默认的数据类型:整数默认的数据类型是int,如果给long类型赋值,需要添加l/L,建议大写L;
小数默认的数据类型是double,如果给float类型赋值,需要添加f/F;
使用场景:1、固定不变的量建议使用常量,PI,WEEK_DAY
2、特殊的含义,STATE_ON,STATE_OFF
运算符
赋值运算符
语法:变量名=表达式;
运算规则:从右往左
int a=12;
int b=a;
int c=a+1;
从键盘输入数据
//导包
import java.util.Scanner;
//初始化scanner
Scanner scanner=new Scanner(System.in);
//接收一个整数
int a=scanner.nextInt();
//接收一个double类型的数据
scanner.nextDouble();
//接收一个字符串String str=scanner.next();
复合赋值运算符
+= -= *= /= %=
int a=1;
a+=2;// a=a+2;
算术运算符
+ - * / %
//整除,整数/整数,结果一定是整数
int a=3/2 //结果是1
//求余 %
int b=13%2;
拆分一个三位数
int num2=986; // 98 6/// 9 86 int bai2=num2/100; int ge2=num2%10; //int shi2=num2/10%10; int shi2=num2%100/10; System.out.println(num2+"的百位数字是:"+bai2); System.out.println(num2+"的十位数字是:"+shi2); System.out.println(num2+"的个位数字是:"+ge2);
单目运算符:自增自减运算符++,--
++
int a=1;
a++; //a=a+1
++在后,先用再+
++在前,先+再用
int a=1; //a=a+2; a+=2; System.out.println(a); System.out.println("-------"); int b=12; //b++; //++b; //b=b+1; //b--; --b; System.out.println(b); System.out.println("-------"); int c=5; // ++在后,先用再+ //--在后,先用再- //System.out.println(c++); int d=c++; System.out.println(c); System.out.println(d); System.out.println("-------"); //++在前,先+再用 //--在前,先-再用 int x=15; //System.out.println(++x); int y=++x; System.out.println(x); System.out.println(y);
关系运算符
> < >= <= == !=
关系表达式的结果是boolean
== 等于
注意:关系表达式不要连写 1<a<6
int num1=23; int num2=23; boolean flag=num1<num2; System.out.println(flag);
double类型在底层是不精确存储,不建议进行==比较
double d1=1.0; double d2=1.0000000000000000000123; System.out.println(d1==d2);
字符串之间的等值比较不能用==,而要用.equals()
String str1="abc"; String str2="abc"; System.out.println(str1==str2); Scanner sc=new Scanner(System.in); String str3=sc.next(); System.out.println(str1==str3); //比较字符串的地址是否一致 boolean f=str1.equals(str3); //比较字符串的值是否一致 System.out.println(f);
char类型在底层是数值存储,也可以进行大小比较
char c='a'; char d='b'; System.out.println(c==97); System.out.println(c<d);
练习
从键盘上输入一个数,输出是否是偶数?
逻辑运算符
链接多个条件/关系表达式
&& 逻辑与 两个条件同时成立,整个表达式才成立 :同真则真,有假则假
|| 逻辑或 两个条件只要有一个成立,则整个表达式成立 :有真则真,同假则假
支持短路,即第一个表达式的结果就可判断整个表达式的结果,则第二个表达式就无需判断
!取反
int num1=15; int num2 =1; boolean f=(num1<10)&&(num2>2); System.out.println(f); boolean f2=(num1<10)||(num2>2); System.out.println(f2); //&& || 支持短路 boolean f3=(num1<10)||(num2++<3); System.out.println(f3); System.out.println(num2); //取反 boolean f4=!f3; System.out.println(f4);
练习
输入一个数,判断是否是个四位整数
位运算符
<<左移:左移一位相当于乘二
>>右移:相当于除二
按位与&: 同1则1,遇0则0
位运算
逻辑运算(3>7)&(2<8);//不支持短路
判断奇偶数
按位或 | :有1则1,同0则0
逻辑运算 ,//不支持短路
取一个数最近的偶树:或1,最低位置1,然后-1,最低位就变成了0
按位 异或 ^:不同为1,相同为0
对同一个数字异或两次,可获得原数字
第一次可看做加密,第二次可看做解密
优先级
先运算,再比较,然后连接,最后赋值
小括号的优先级最高,建议添加小括号增强代码的可读性。
交换算法
2程序流程结构
2.1顺序结构
从上往下依次执行
2.2选择结构
需要先判断条件, 再决定如何执行。
2.2.1 if结构
简单if:
语法:if(条件表达式){
执行语句
}
条件表达式:结果式boolean,可以是变量,关系表达式,逻辑表达式。
执行流程:判断条件表达式的值,如果为ture,执行语句;负责继续执行结构后的语句。
使用场景:只有一个分支的情况下
练习:有两个数,输出较大的那个数
语法:if(条件表达式){
执行语句1;
}else{
执行语句2
}
执行流程:先判断条件表达式语句1是否成立,如果不成立则输出执行语句2.
练习:键盘上输入密码(正确的密码是123),输出密码是否输入正确
输入一个数,判断奇偶数
多重if结构
语法:
if(条件){
语句1;
}else if(条件2){
语句2;
}else if(条件3){
语句3;
}......
else
}
使用场景:多路分支,一个维度连续区间的多路分支。
if(条件1){
if(条件2) {
}
}else{}
}
2.3循环结构
作业练习:
- 从键盘输入3个数,求最大值
import java.util.Scanner;
public class Day408{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请分别输入三个数:");
int num1=sc.nextInt();
int num2=sc.nextInt();
int num3=sc.nextInt();
if(num1>num2&&num1>num3){
System.out.println(num1);
}else if(num2>num3){
System.out.println(num2);
}else{
System.out.println(num3);
}
}
}
2.模拟取款,输入取款金额,如果余额够,显示余额;否则提示余额不足。
import java.util.Scanner;
public class Day409{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入取款金额:");
int money=50000;
int num2=sc.nextInt();
if(num2>money){
System.out.println(num2);
}else if(num2<money){
int yu=money-num2;
System.out.println("您的余额为:"+yu);
}else{
System.out.println("余额不足");
}
}
}
3.我想买车,买什么车决定于我在银行有多少存款:
如果我的存款超过500万,我就买卡迪拉克
否则,如果我的存款超过100万,我就买帕萨特
否则, 如果我的存款超过50万,我就买依兰特
否则, 如果我的存款超过10万,我就买奥托
否则, 如果我的存款10万以下 ,我买捷安特
import java.util.Scanner;
public class Day410{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的存款:");
int money=sc.nextInt();
if(money<100000){
System.out.println("购买捷安特");
}else if(money<500000){
System.out.println("购买奥拓");
}else if(money<1000000){
System.out.println("购买伊兰特");
}else if(money<5000000){
System.out.println("购买帕萨特");
}else{
System.out.println("购买凯迪拉克");
}
}
}
4.机票的价格受季节旺季、淡季的影响,头等舱和经济舱价格也不同。假设机票原价5000元,请根据出行的月份和选择的仓位输出实际的机票价格。
旺季(4-10月) | 头等舱 | 九折 |
经济舱 | 八折 | |
淡季 | 头等舱 | 五折 |
经济舱 | 四折 |
控制台输出如下:
请输入您出行的月份:1-12 5 请选择头等舱(1)还是经济舱(2)? 2 您的机票价格为:3000.0 |
import java.util.Scanner;
public class Java3 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入您的出行月份:");
int month=sc.nextInt();
System.out.println("请选择头等舱(1)还是经济舱(2)?");
int cang=sc.nextInt();
int money=5000;
if (month>3&&month<11){
System.out.println("您是旺季出行");
if(cang==1){
double money1=money*0.9;
System.out.println("您的头等舱票价为"+money1);
}else{
double money2=money*0.8;
System.out.println("您的经济舱票价为"+money2);
}
}else {
System.out.println("您是淡季出行");
if(cang==2){
double money3=money*0.5;
System.out.println("您的头等舱票价为"+money3);
}else {
double money4=money*0.4;
System.out.println("您的经济舱票价为"+money4);
}
}
}
}