目录
详细的Eclipse软件安装步骤及方法(免费)零基础学Java语言_浙江大学。
IntelliJ软件安装步骤及方法(付费)Java 速成 --安装地址未来mac下载。
安装好后,在src里面创建class就可以开始啦!
一、变量与计算
任何程序都可以理解为有一些输入,将这些输入的数据记录下来,加以计算,然后输出的过程。
1.1 输入与输出
1个简单的数据输入,通过 Scanner 类的nextLine() 方法获取输入的字符串,用System.out.println()方法输出。
import java.util.Scanner;
public class hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in); // 从键盘接收数据
System.out.println("echo:"+s.nextLine()); // 让s这个对象读入下一行动作nextLine,接收字符串
}
}
tips:
IntelliJ里面好用的快捷键来两个:
psvm + tab:public static void main(String[] args)
sout + tab:System.out.println())
1.2 变量
变量就是申请内存来存储读到的内容。当创建变量的时候,需要在内存中申请空间。
目标:用户输入1个数字,用100减去输入的这个数字,将结果显示出来。
Scanner s= new Scanner(System.in);
System.out.println("100-"+ s.nextInt()+ "=" + (100-s.nextInt()));
//用nextInt(这里不要求一整行,只要求数字)
上面的这段代码,是需要从用户那读2个输入s.nextInt()。第一个输入放在“100-”处显示,第二个输入参与后面”100-“的计算。
如果两次输入不一样,会出现很奇葩的效果。如:输入23,33,会显示100-23=67。
所以,我们需要做一个输入,并可以把这个输入同时用到多个地方,用很多次,这就需要变量。
Scanner s= new Scanner(System.in);
int price; // 定义变量 price
price = s.nextInt(); // 给变量赋值
System.out.println("100-"+ price + "=" + (100 -price )); // 将下面的值替换成变量
tips:
1. 变量定义的形式:<类型名称> <变量名称>;
2. Java是一种强类型语言,在使用前必须定义或者声明确定的数据类型。
数据类型表示在变量中可以存放什么样的数据;
3. 变量的命名只能由字母、数字和下划线组成。数字不可以出现在第一个位置;
4. 多个变量用逗号隔开:int price, amount;
1.3 赋值
用变量做各种计算,将结果直接输出或者保存到变量中。
int price=0; // 定义变量 price ,初始值是0
price = s.nextInt(); // 给变量赋值
还是上面的这两行,price = s.nextInt() 要求s这个对象做读入下一个整数的动作,读到的结果赋值给变量price。
这里的“ = ”是一个赋值运算符,表示将“ = ”右边的值赋给左边的变量。
它不同于数学中的“等于”关系,Java里它是一个动作,是动态的。
变量初始化
<类型名称> <变量名称> = <初始值>,组合变量定义的时候,可以单独给单个变量赋初值。最好一行只定义1个变量。
Java没有强制要求所有的变量都在定义的地方做初始化,但是要求所有的变量在第一次被使用之前被赋值。
下图,变量price在定义的地方没有做初始化,所以在下面被使用的时候,会提示“初始化变量price”。(option + return)
表达式:“ = “是赋值运算符,有运算符的式子叫做表达式。
常量:定义一个常量:final int AMOUNT=100; final 是修饰符,放在int前,表示这个变量的值一旦被初始化,就不能再修改了。
【练习】最终显示结果如下(“票面“和”金额“需要键盘输入)
请输入票面:100
请输入金额:13
找零:100-13=87
Scanner in = new Scanner(System.in);
int amount;
int price;
int change;
System.out.print("请输入票面:");
amount = in.nextInt();
System.out.print("请输入金额:");
price = in.nextInt();
change = amount - price ;
System.out.print("找零:"+ amount +"-"+ price +"="+ change);
二、浮点数计算
在计算机里,处理不带小数点的整数和带小数点的数(浮点数),是差别非常大的事情。
目标:输入外国人的身高,然后换算成米(例:5英尺7英寸(5+7/12)*0.3048=1.7018米)
Scanner in = new Scanner(System.in);
int foot;
double inch; // double 双精度
final double v = 0.3048; // 常量表示 final double
System.out.print("英尺:");
foot = in.nextInt();
System.out.print("英寸:");
inch = in.nextDouble(); // 将nextInt 改为nextDouble
System.out.print("身高是:"+ (foot + inch /12)*v + "米");
如果inch变量还用int类型的话,inch/12 会取整数(整数和整数的运算结果是整数)计算有差。所以,可以将inch类型定义为double。或者另外一种方法,将12改为12.0(运算符的两边有任意一个变成浮点数,那么计算结果就是浮点数)。此外,浮点计算是有误差的 System.out.println(1.2-1.1) 。
三、计算优先级
3.1 算数运算符
算数运算符
- 单目取正:a* +b 单目取负:a* -b 优先级高于四则运算;
2. 乘方:myInt002 = (int)Math.pow(myInt001,2) 强制转换类型(int)()的优先级高于四则运算;
3. 自增与自减(特殊算数运算):自增和自减-CSDN博客、java基础(二) 自增自减与贪心规则
例1:
var d = 20;
var result = d++ + ++d + d;
// 20 + 22 + 22 result的值是64
/*
自增的优先级是要高于加法的,然后表达式自左向右执行
1.d++ 这个表达式的值是原值(d++)=20 经过这个表达式 d的值自增1 d=21;
2.++d 这个表达式的值是d+1,(++d)=d+1=22,经过这一步,d的值自增1 d=22;
3.d = 22
需要理解:a是一个变量,a++是一个表达式,++a是一个表达式。这三个的含义是不一样的。
参与运算时,一定要记得下面规则:
1. 无论时a++,还是++a,都会使变量a立即+1
2. 参与运算时,a++的值为a的原值(a未+1的值)
3. 参与运算时,++a的值为(a+1)
例2:
int a = 5;//定义一个变量;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("自增运算符前缀运算后a="+a+",x="+x);
System.out.println("自增运算符后缀运算后b="+b+",y="+y);
/*
运行结果:
自增运算符前缀运算后a=6,x=12
自增运算符后缀运算后b=6,y=10
例3是根据结果尝试的步骤(系统自动提示--a/2 始终为0)有问题的话,欢迎指正~
例3:
int a=2;
System.out.println(--a/2+(++a*2)); //--a/2 始终为0,此时a变成1|++a 自增为2,再2*2=4,最后0+4=4
System.out.println(++a*2+--a/2); //++a 自增为3,3*2=6 此时a变成3|--a 自减为2,再2/2=1,最后6+1=7
/*
运行结果:
4
7
3.2 关系运算符
除了一开始帮助数学家解决算数问题外,计算机的智能还体现在,能根据事先制定的规则做出判断。而能做判断的基础,是可以对数据进行比较,比较就是关于两个数据是否相等、谁大谁小?这需要用到关系运算:对两个数据之间的关系的计算。
关系运算符
关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。关系运算符优先级低于算数运算符,高于赋值运算符。在关系运算符内,==,!=优先级低。
// int和double相等
int a = 5;
double b =5.0;
System.out.println(a == b); //true
// 浮点运算有误差,10个0.1和1.0不等
double c = 1.0;
double d = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
System.out.println(c == d); //False
判断两个浮点数是否相等:System.out.println(Math.abs(c-d) < 1e-6);
3.3 条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,需要先判断布尔表达式的值,再确定将前值(True)或者后值(False)赋值给变量。
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
// 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
b = (a == 10) ? 20 : 30;
System.out.println( "Value of b is : " + b );
/*运行结果
Value of b is : 30
Value of b is : 20
3.4 位运算符
位运算符
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
3.5 逻辑运算符
逻辑运算符
下面例子里,a的结果为5。该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断(a不自增),所以 a 的值为 5。
例:
int a = 5;//定义一个变量;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路逻辑运算符的结果为"+b); //false
System.out.println("a的结果为"+a); //
3.6 赋值运算符
经常遇到的 a +=1 等价 a = a+1 (把左操作数和右操作数相加赋值给左操作数)
赋值运算符
3.7 Java 运算符优先级
关联性(左右结合性):有多种运算符参与运算的时候,先要考虑优先级,有相同优先级的就看结合性以决定运算顺序。所以,如果没有两个相同优先级的运算,就不存在考虑结合性的问题了。
四、数学计算
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
Math.E
Math.PI
Math.sin(30*Math.PI/180)
Math.abs(-13.25)
Math.max(12,14)
Math.valueOf()
Math.random()
Math.random()*(上限-下限+1)+下限