前言
本期我们讲一起学习Java语言的基本符号、基本数据类型和运算符,以及分支流程控制语句:
接第三期:
- 强化训练
- 练习:
Java区分大小写。
Java关键字是小写。
编译Java程序的命令是javac 程序名.java。
运行Java程序的命令是java 程序名。
在控制台打印字符串(比如上面的打印Hello World)的语句是【sout】(【System.out.println();】)。
package com.luoyu.helloworld;
public class HelloWorld2 {
public static void main(String[] args) {
System.out.println("**********************");
System.out.println("* Hello World! *");
System.out.println("**********************");
}
}
一、BMI具体指什么?
BMI:体重指数,又称身体质量指数(Body Mass Index,BMI)是用体重公斤除以身高的数平方得到的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。男性<20过轻,20-25适中,25-30过重,30-35肥胖,>35属于非常肥胖。女性<19过轻,19-24适中,24-29过重,29-34肥胖,>34属于非常肥胖。无论男女,理想指数都应是22左右。
二、技术准备(需要学习了解的技术)
1.变量
变量主要用于保存输入、输出和程序运行过程中的中间数据。在Java中,每一个变量都属于某种类型。在使用变量前,要先对变量进行声明。
-
声明变量:
在声明变量时,变量所属的类型位于前面,随后是变量名:
double salary;
String name;
int x,y;
在Java中,声明变量是一条完整的语句,每一个声明语句后面都要跟分号来做结束。 -
初始化变量:
int age;
age=20;
System.out.println(age);
-
变量可以声明的同时赋值:
int age2=21;
System.out.println(age2);
2.标识符
标识符是用户定义的用于表示变量名、类名、接口名、方法名、方法参数名等的符号,且遵循一定的规则:
- 由字母、下划线、$符号组成,对标识符的长度没有特别限制;
- 必须以字母、下划线、或$符号开头;
- 标识符区分大小写;
- 标识符不能用系统的保留字(关键字);
2.基本符号
和其他语言相同,Java程序也是由多个文件组成的,每个文件又是由很多代码组成,每个代码行是由一些基本符号组成:
-
数字常量:
数字常量是由0到9这10个符号组成,用于表示数字,同数学一样可以用“-”表示复数。 -
字符常量:
Java中的字符常量是使用英文单引号括起来的某个字符,例如’a’。字符常量可以是数字,如’0’,虽然里面是数字0,但在这里是字符’0‘。Java使用Unicode编码,所以字符常量可以用于表示汉字。 -
字符串常量:
字符串常量是使用英文双引号括起来的字符序列,例如"Hello World",用双引号括起来的即使只有一个字符也是字符串常量。 -
布尔常量:
-
布尔常量只有两个值:true和false。true表示“真”,false表示“假”。
3.数据类型
- int是整形中的默认类型,double是浮点数中的默认类型
- long类型赋值时后面要加上【l或者L】,float类型赋值时后面要加上【f或者F】
4.数据类型转换
-
自动类型转换:类型范围小的变量,可以直接赋值给类型范围大的变量(为什么要进行类型转换:存在不同类型的变量赋值给其他类型的变量)
byte->short->int->long->float->double
char->int->long->float->double
-
表达式的自动类型转换:在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算
byte、short、char->int->long->float->double
1、表达式的最终结果类型是由表达式中的最高类型决定
2、在表达式中,byte、short、char是直接转换成int类型参与运算的
byte a=100;byte b=120;int c=a+b;
-
强制类型转换:强行将类型范围大的变量、数据赋值给类型范围小的变量(只能准确转换出原本在类型范围小的变量的范围中的变量、数据)
1、数据类型 变量2 = (数据类型)变量1、数据
int a=20;byte b=(byte)a;
2、强制类型转换可能造成数据(丢失)溢出
3、浮点型强转成整形,直接丢掉小数部分,保留整数部分返回
5.运算符
-
算数运算符:+、-、*、/、%分别表示加、减、乘、除、求余。“+”、“-”也可以做单目运算符,表示“正”和“负”。
-
赋值运算符
1、基本赋值运算符
“=”“是赋值运算符,把右边的表达式赋值给左边的变量。
2、复合赋值表达式
赋值运算符与其他运算符结合使用完成赋值 -
自增自减运算符
1、自增运算符:把自身增加1
y=x++;==y=x;x=x+1
y=++x;==x=x+1;y=x;
运行顺序不一样,值也会不一样,一般只会用【++x】。即让数自增1然后再参与运算。 -
比较运算符
比较(关系)运算符用于对两个值进行比较,其返回值为布尔类型
比较运算符有:>、>=、<、<=、==、!=,分别表示大于、大于等于、小于、小于等于、等于、不等于。 -
逻辑运算符
1、“&&”和“&”都是逻辑与,只有当两个操作都为true的时候,结果才为true
2、“||”“|”都是逻辑或,只有当两个操作都为false的时候,结果才为false
3、“!”是逻辑非,如果操作数为false,结果为true,如果操作数为true,结果为false
4、“^”是逻辑异或,如果两个操作数不同,结果为true,如果两个操作数相同,结果为false
一般用双与和双或,双与“&&”只要有一个为false就为false,不会再去看另外一边的式子,双或“||”只要有一个为true就为true,不会再去看另外一边的式子。 -
位运算符
位运算符有:&、|、~、^,分别表示按位与、按位或、按位非、按位异或
-
移位运算符
<<是左移
>>是右移
>>>是无符号右移
-
条件运算符(三目运算符)
基本格式:op1?op2:op3
op1的结果为布尔类型,如果op1的值为true,则表达式结果为op2,如果op1的值为false,则最后的结果为op3
-
字符串连接运算符
“+”可以用来连接运算符,其中至少要有一个是字符串,另外一个就可以是任意数据类型或是任意类的对象
package com.luoyu.bmi;
import java.util.Date;
public class OperatorDemo {
public static void main(String[] args) {
System.out.println("----------------------1、算数运算符-------------------------");
/*1、算数运算符*/
//定义整形变量a,b,并分别赋值10和20
int a=20;
int b=20;
//分别进行加减乘除和求余运算
int sum=a+b;
int sub=a-b;
int mul=a*b;
int div=a/b;
int res=a%b;
//输出运算结果
System.out.println("a="+a+",b="+b);
System.out.println("a+b="+sum);
System.out.println("a-b="+sub);
System.out.println("a*b="+mul);
System.out.println("a/b="+div);
System.out.println("a%b="+res);
System.out.println("----------------------2、赋值运算符-------------------------");
/*2、赋值运算符*/
//使用复合赋值方法计算表达式x+3,并把结果赋值给x
int x=3;
x+=3;
System.out.println(x);
//不使用复合赋值表达式计算y+3,并把结果赋值给y
int y=4;
y=y+4;
System.out.println(y);
System.out.println("----------------------3、自增自减运算符-------------------------");
/*3、自增自减运算符*/
int c=0;
int d=0;
//赋值之后再+1
int e=c++;
//此时
//赋值之前先+1
int f=++d;
//此时
System.out.println(e);
System.out.println(f);
System.out.println("----------------------4、比较运算符-------------------------");
/*4、比较运算符*/
int g=3;
int h=4;
boolean bigger = g > h ;
boolean less = g < h ;
boolean biggerEqual = g >= h ;
boolean lessEqual = g <= h ;
boolean equal= g ==h ;
boolean unequal = g != h ;
System.out.println("g是否大于h? "+bigger);
System.out.println("g是否小于h? "+less);
System.out.println("g是否大于等于h? "+biggerEqual);
System.out.println("g是否小于等于h? "+lessEqual);
System.out.println("g是否等于h? "+equal);
System.out.println("g是否不等于h? "+unequal);
System.out.println("----------------------逻辑运算符-------------------------");
/*5、逻辑运算符*/
boolean b1=true;
boolean b2 =false;
//进行各种布尔运算,并输出结果
System.out.println("b1&&b2="+(b1&&b2));
System.out.println("b1&b2="+(b1&b2));
System.out.println("b1||b2="+(b1||b2));
System.out.println("b1|b2="+(b1|b2));
System.out.println("!b1="+!b1);
System.out.println("b1^b2="+(b1^b2));
System.out.println("----------------------6、位运算符-------------------------");
/*6、位运算符*/
//难理解,还一般用不上,就不写了
System.out.println("----------------------7、移位运算符-------------------------");
/*7、移位运算符*/
int aa=10;
int bb =2;
int cc=-3;
//左移
//aa<<bb,aa是要移位的数,bb是要移动的位数,结果相当于aa乘以2的bb次方,即=10*(2^2)
System.out.println("aa<<bb="+(aa<<bb));
//难理解,还一般用不上,就不写了
System.out.println("----------------------8、条件运算符-------------------------");
/*8、条件运算符*/
int o=10;
int p=7;
int q;
//如果o>p,把o赋值给q,如果p>o,把p的值赋值给q
q = o>p?o:p;
System.out.println("o和p之间的最大值是"+q);
System.out.println("----------------------9、字符串连接运算符-------------------------");
/*9、字符串连接运算符*/
byte link1=3;
short link2=4;
int link3=5;
long link4=15;
float link5=69f;
double link6=19.7;
char link7='a';
boolean link8=true;
//获取当前时间,Java自带的包
Date link9=new Date();
System.out.println("byte类型:"+link1);
System.out.println("short类型:"+link2);
System.out.println("int类型:"+link3);
System.out.println("long类型:"+link4);
System.out.println("float类型:"+link5);
System.out.println("double类型:"+link6);
System.out.println("char类型:"+link7);
System.out.println("boolean类型:"+link8);
System.out.println(link9);
}
}
6.选择结构
再程序执行的过程中,根据特定条件执行某些语句,就叫选择结构
选择结构包括:if和switch
if语句:if语句就是在满足一定条件的时候,执行某些语句。
基本结构:
if(条件表达式)
{
语句
}
---------------------------------------------
if(条件表达式)
{
语句1
}else{
语句2
}
---------------------------------------------
if(条件表达式)
{
语句1
}else if{
语句2
}else{
语句3
}
条件表达式的结果必须是boolean类型的值,要执行的语句可以是多条,每条语句以分号结束即可。多个条件判断可以直接嵌套,俗称套娃:满足一个条件,进到if里面去,然后再判断是否满足条件,满足了再进到这个if里面。
switch语句:在多种情况中只选择一个执行,根据整形变量的值,输出不同的内容,就可以使用switch。
基本结构:
switch(表达式)
{
case 值1:语句1
case 值2:语句2
case 值...:语句...
case 值n:语句n
defaule:语句n+1
}
default的功能相当于if…else中的else,是在case语句都没执行的情况下执行的。
使用switch的时候要在case语句的最后加上break,这个代表退出switch选择,不然的话switch会把里面所有的case和default所对应的语句全部执行一遍。
package com.luoyu.bmi;
public class ChooseDemo {
public static void main(String[] args) {
System.out.println("------------------1、单if语句-------------");
/*1.单if语句*/
int a=10;
int b=8;
//先把a的值赋值给max,然后进行判断
int max=a;
//单if
if (a<b){
max=b;
}
if (a>b){
max=a;
}
System.out.println(max);
//if...else语句
System.out.println("------------------2、if...else语句-------------");
int a2=15;
int b2=16;
int max2=a2;
if (a2>b2){
max2=a2;
}else {
max2=b2;
}
System.out.println(max2);
System.out.println("------------------3、if...else if...else语句-------------");
//if...else if...else语句
int a3=9;
int b3=9;
int max3=a3;
if (a3>b3){
max3=a3;
System.out.println(max3);
}else if (a3==b3){
System.out.println("这两个值一样大!");
}else {
max3=b3;
System.out.println(max3);
}
System.out.println("------------------4、switch语句-------------");
//在多种情况中只选择一个执行,根据整形变量的值,输出不同的内容,就可以使用switch
int a4=2;
switch (a4)
{
case 1 :
System.out.println("第一个选项,代表a4的值为1");
case 2 :
System.out.println("第二个选项,代表a4的值为2");
case 3 :
System.out.println("第三个选项,代表a4的值为3");
case 4 :
System.out.println("第四个选项,代表a4的值为4");
default:
System.out.println("a4的值不合法");
}
System.out.println("-----------------------------");
char a5=3;
switch (a5)
{
case 1 :
System.out.println("第一个选项,代表a4的值为1");break;
case 2 :
System.out.println("第二个选项,代表a4的值为2");break;
case 3 :
System.out.println("第三个选项,代表a4的值为3");break;
case 4 :
System.out.println("第四个选项,代表a4的值为4");break;
default:
System.out.println("a5的值不合法");break;
}
}
}
一、BMI如何计算
package com.luoyu.bmi;
import java.util.Scanner;
public class BMIDemo {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc=new Scanner(System.in);
/*
*从键盘输入性别,升高,体重
* 输入整数0表示女1表示男
* 身高使用浮点数,精确到小数位后两位,单位(米)
* 体重使用公斤
*/
System.out.println("请输入性别:0表示女,1表示男");
int sex=sc.nextInt();
System.out.println("请输入身高,精确到小数点后两位,单位(米)");
double length=sc.nextDouble();
System.out.println("请输入体重,单位(公斤)");
double weight=sc.nextDouble();
double bmi=weight/length/length;
System.out.println("你的体重指数是:"+bmi);
System.out.println("你的健康程度是:");
if (sex==0){
if (bmi < 19) {
System.out.println("女生,体重过轻,建议加强营养补充!");
}else if (bmi<24){
System.out.println("女生,体重适中,请保持!");
}else if (bmi<29){
System.out.println("女生,体重过重,注意锻炼身体!");
}else if (bmi<34){
System.out.println("女生,属于肥胖行列,建议保持饮食习惯!");
}else {
System.out.println("女生,属于非常肥胖行列,建议减肥!");
}
}else {
if (bmi <20) {
System.out.println("男生,体重过轻,建议加强营养补充!");
}else if (bmi<25){
System.out.println("男生,体重适中,请保持!");
}else if (bmi<30){
System.out.println("男生,体重过重,注意锻炼身体!");
}else if (bmi<35){
System.out.println("男生,属于肥胖行列,建议保持饮食习惯!");
}else {
System.out.println("男生,属于非常肥胖行列,建议减肥");
}
}
System.out.println("BMI指数最理想的是22,为了健康的身体,你要加油哦!");
}
}
总结
- 我有一些东西没讲,希望朋友们有不懂的的时候能去直接上网搜,写程序就是要让自己没有一丝一毫的问题,特别是刚开始学的时候,遇到问题一定要解决,解决过的问题一定要记录下来,防止下次遇到。
- 初学者的朋友们,复制代码时不要直接全部复制完然后整个放到你的项目中去,要注意main方法和类名:
把上面和下面的全删掉,值保留中间的部分,就能直接放在你创建的类里面去运行了。还有,Java程序是通过main方法运行的,别忘了给你的类添加main方法。