回顾

1、计算机语言:人机通信的语言
2、计算机程序:指挥计算机工作(完成任务)指令的集合,编排程序由计算机语言编写
3、计算机软件:计算机程序及其相关文档的集合

一、第一个JAVA程序

1.1 JAVA程序的格式:

修饰符 class 类名{
程序代码 ;
}
public class HelloWorld{
public static void main(String[] args){
执行代码;
}
}
class是一个关键字,它用于定义一个类。在Java中,类就相当于一个程序,所有的代码都需要在类中书写。
HelloWorld是类的名称,简称类名。class关键字与类名之间需要用空格、制表符、换行符等任意的空白字符进行分隔。类名之后要写一对大括号,它定义了当前这个类的管辖范围。
“public static void main(String [] args){}”定义了一个main()方法,该方法是Java程序的执行入口,程序将从main()方法所属大括号内的代码开始执行。每一类有且仅有一个main()方法。
在main()方法中编写了一条执行语句“System.out.println(“这是第一个Java程序!”);”,它的作用是打印一段文本信息,执行完这条语句会在命令行窗口中打印“这是第一个Java程序!”。

1.2 编写程序

菜鸟在线工具:https://c.runoob.com/compile/10/
在线工具:https://tool.lu/coderunner/
•每条执行语句的最后都必须用分号(;)结束。在编写程序时,需要特别注意的是,程序中出现的空格、括号、分号等符号必须采用英文半角格式,否则程序会出错。
•Java语言严格区分大小写。例如,定义一个类时,Computer和computer是两个完全不同的符号,在使用时务必注意。
•虽然Java没有严格要求用什么样的格式来编排程序代码,但是,出于可读性的考虑,应该让自己编写的程序代码整齐美观、层次清晰。以下两种方式都可以,但是建议使用后一种。
image.png

  • 在编写程序时,为了使代码易于阅读,通常会在实现功能的同时为代码加一些注释。
  • 注释是对程序的某个功能或者某行代码的解释说明,它只在Java源文件中有效,在编译程序时编译器会忽略这些注释信息,不会将其编译到class字节码文件中去。
  • Java中的注释有三种类型,具体如下:

单行注释:通常用于对程序中的某一行代码进行解释,用符号“//”表示,“//”后面为被注释的内容,具体示例如下
image.png
•多行注释:顾名思义就是在注释中的内容可以为多行,它以符号“/”开头,以符号“/”结尾,多行注释具体示例如下:
image.png
•文档注释:以“/*”开头,并在注释内容末尾以“/”结束。

  • 在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如,包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。
  • 标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但不能以数字开头,不能是Java中的关键字。

    回顾

    1、Java的程序结构
    2、main方法
    3、代码的注释
    4、标识符

    二、Java的常量与变量

    2.1 常量

  • 常量就是在程序中固定不变的值,是不能改变的数据。

  • 在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。

1、整型常量
整型常量是整数类型的数据,它的表现形式有四种,具体如下:
•二进制:由数字0 和1 组成的数字序列,如:00110101。
•八进制:以0开头并且其后由0 ~7范围(包括0和7)内的整数组成的数字序列,如:0342。
•十进制:由数字0~9范围(包括0和9)内的整数组成的数字序列。如:198。整数以十进制表示时,第一位不能是0,0本身除外
•十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。
2、浮点数常量
浮点数常量就是在数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:
image.png
3、字符常量
字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(’ ‘)引起来,它可以是英文字母、数字、标点符号、以及由转义序列来表示的特殊字符。具体示例如下:
image.png
上面的示例中,’\u0000’表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示是因为,Java采用的是Unicode字符集,Unicode字符以\u开头,空白字符在Unicode码表中对应的值为’\u0000’。
4、字符串常量
字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(” “)引起来,具体示例如下:
image.png
一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。
5、布尔常量
布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。
6、null常量
null常量只有一个值null,表示对象的引用为空。

二、变量

2.1 计算机运算原理

image.png

  • 所有参加运算的数据都保存在内存——内存保存参加运算的数据。
  • 运算的结果和需要输出的数据保存在内存——内存保存运算结果。
  • 把存在内存的数据叫做变量,因为存在内存的数据是临时的。

如何将数据保存内存,如何从内存取数据呢?

  • 内存就像一层楼,分了很多房间,每一个房间叫做一个存储单元。每一个单元都有一个编号,叫内存地址,如教室编号(501,502,……)是教室的地址。在JAVA中用标识符来表示地址,叫变量名。
  • 每个存储单元存什么数据呢?用数据类型(整数、小数等)来决定存储单元所存储的数据。
  • 变量就是存在内存的数据,数据是临时的,也就是值是可以变化的。变量由变量名来标识,由数据类型来决定变量的变量的类型,参加运算的数据和运算的结果都要存在变量中。

image.png

2.2 变量数据类型

1、 整数类型变量

  • 用来存储整数数值,即没有小数部分的值。
  • 整数类型分为4种不同的类型:字节型(byte)、短整型(short)、整型(int)和长整型(long)。

    image.png

  • 占用空间指的是不同类型的变量分别占用的内存大小

  • 取值范围是变量存储的值不能超出的范围
  • 为一个long类型的变量赋值时需要注意一点,所赋值的后面要加上一个字母“L”(或小写“l”),说明赋值为long类型。如果赋的值未超出int型的取值范围,则可以省略字母“L”(或小写“l”)

【例2.2.1】
public class Demo_01 {
public static void main(String []args) {
//字节类型
byte b = 10;
//短整型
short s = -20;
//整型
int i;
//长整型
long lg = 1000L;
//计算
i = s + b;
System.out.println(s);
System.out.println(b);
System.out.println(i);
System.out.println(lg);

}
}
2、浮点数类型变量

  • 浮点数类型变量用来存储小数数值。
  • 浮点数类型分为两种:单精度浮点数(float)、双精度浮点数(double),double型所表示的浮点数比float型更精确。
  • image.png
  • 在取值范围中,E表示以10为底的指数,E后面的“+”号和“-”号代表正指数和负指数,例如1.4E-45表示1.4*10-45。
  • 在为一个float类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或“f”),而为double类型的变量赋值时,可以在所赋值的后面加上字符“D”(或“d”),也可不加。
  • image.png
  • 在程序中也可以为一个浮点数类型变量赋予一个整数数值.

【例2.2.2】
public class Demo_02 {
public static void main(String []args) {
//定义变量
int x = 10;
//float y = 20.5F;
double y = 20.5;
//计算
double z = x + y;
//输出
System.out.println(z);
}
}
3、字符类型变量

  • 用于存储一个单一字符,在Java中用char表示。
  • 每个char类型的字符变量都会占用2个字节。
  • 赋值时,要用英文半角格式的单引号(’ ‘)把字符括起来,如’a’,
  • 也可以赋值为0~65535范围内的整数,计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为’a’。

image.png
【例2.2.3】
public class Demo_03 {
public static void main(String []args) {
//字符型
char c = ‘A’;
int i = c + 10;
System.out.println(c);
System.out.println(i);
}
}
4、布尔类型变量

  • 布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false。具体示例如下:

image.png
【例2.2.4】
public class Demo_04 {
public static void main(String []args) {
//布尔型
boolean b;
int x = 50;
int y = 60;
b = x < y;
System.out.println(b);
}
}
5、字符串类型变量

  • 字符串类型不符JAVA基本类型,是引用类型(后续章节介绍)。
  • 赋值时,要用英文半角格式的双引号(””)把字符括起来,如”a”,”bcd1234”。
  • 字符串类型符String

【例2.2.5】
public class Demo_05 {
public static void main(String []args) {
//字符串
String s = “abcd”;
int x = 10;
int y = 20;
System.out.print(“x+y=”);
System.out.println(x+y);
}
}

2.3 变量类型转换

  • 当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。
  • 根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。

1、自动类型转换

  • 也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。
  • 要实现自动类型转换,必须同时满足两个条件,

•第一是两种数据类型彼此兼容,
•第二是目标类型的取值范围大于源类型的取值范围。
image.png
(1)整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量
(2)整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
(3)其它类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。
【例2.3.1】
public class Demo_06 {
public static void main(String []args) {
//数据类型转换
int x = 10;
double y = 20.5;
double z1 = x + y;
System.out.println(z1);

}
}
2、强制类型转换

  • 强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。
  • 当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
  • 强制类型转换的格式如下所示:
  • image.png

【例2.3.2】
public class Demo_07 {
public static void main(String []args) {
//数据类型转换
int x = 10;
double y = 20.5;
//int z2 = x +(int) y;
int z2 = (int)(x + y);
System.out.println(z2);
char c = ‘A’;
int i = c + 10;
char c1 = (char) i;
System.out.println(c1);
}
}

2.4 Java中的运算符

1、算术运算符

  • 算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号。
  • image.png
  • 算术运算符看上去比较简单,也很容易理解,但在实际使用时有很多需要注意的问题,具体如下:

•(1)在进行自增(++)和自减(—)的运算时,如果运算符放在操作数的前面则是先进行自增或自减运算,再进行其它运算。反之,如果运算符放在操作数的后面则是先进行其它运算再进行自增或自减运算。
•(2)在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。
•(3)在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
【例2.4.1.1】
public class Demo_08 {
public static void main(String []args) {
int x = 13;
int y = 3;
double z =3.0;
//求商:如果是两个整数相除,结果是商(整数)=>整除
double r1 = x / y; // r1=4
double r2 = x / z; // r2=4.3333
System.out.println(“r1=” + r1 +”\t” + “r2=” + r2);
//取模=>求余数
int r3 = x % y; // r3=1
System.out.println(“r3=” + r3);
}
}
【例2.4.1.2】
public class Demo_09 {
public static void main(String []args) {
int x = -13;
int y = 3;
int z = -5;
//取模:符号与第一个数相同,与第二个数无关
System.out.println(x % y);//-1
System.out.println(x % z);// -3
System.out.println(y % z);// 3
//++ , —
int r1 = x ++; //r1=x,x=x+1
System.out.println(“r1=” + r1 + “,x=” + x);//r1=-13,x=-12
int r2 = — y; //y=y-1,r2=y
System.out.println(“r2=” + r2 + “,y=” + y);//r2=2,y=2

}
}
2、赋值运算符

  • 赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量,表中列出了Java中的赋值运算符及用法。

image.png

  • 在赋值运算符的使用中,需要注意以下几个问题:

(1)在Java中可以通过一条赋值语句对多个变量进行赋值
(2)除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、=、/=、%=赋值运算符都可依此类推。
(3)然而在使用+=、-=、
=、/=、%= 运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显式地声明。
【例2.4.2.1】
public class Demo_10 {
public static void main(String []args) {
int x = -13;
int y = 3;
double z = 5.5;
//z = z + x;
z += x;
System.out.println(“z=” + z);
// x = x z;
x
=z;
System.out.println(“x=” + x);
}
}
3、比较运算符

  • 比较运算符用于对两个数值或变量进行比较,其结果是一个布尔值,即true或false。
  • image.png
  • 比较运算符在使用时需要注意一个问题,不能将比较运算符“==”误写成赋值运算符“=”。

【例2.4.3.1】

4、逻辑运算符

  • 逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型。

image.png

  • 在使用逻辑运算符的过程中,需要注意以下几个细节:

(1)逻辑运算符可以针对结果为布尔值的表达式进行运算。如:x > 3 && y != 0。
(2)运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。当运算符“&”和“&&”的右边为表达式时,两者在使用上还有一定的区别。在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
(3)运算符“|”和“||”都表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
(4)运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
5、运算符的优先级

  • 在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,把这种顺序称作运算符的优先级。

image.png

2.5 综合训练

【例2.5.1】
[

](https://blog.csdn.net/zxr15709447338/article/details/87925861)超市结算清单
商品 单价 数量合计
可乐 6.5 2 13
大白 3.9 3 11.7
应付:24.7
【程序】
public class Demo_14{
public static void main(String[] args){
// 可乐
double x1 = 6.5;
double x2 = 2;
double x_sum = x1 x2;
// 大白
double y1 = 3.9;
double y2 = 3;
double y_sum = y1
y2;
// 总计
double sum = x_sum + y_sum;

System.out.println(“商品\t单价\t数量\t合计”);
System.out.println(“可乐\t” + x1 + “\t” + x2 +”\t” + x_sum);
System.out.println(“大白\t” + y1 + “\t” + y2 +”\t” + y_sum);
System.out.println(“应付:” + sum);
}
}
打印结果:
image.png
【例2.5.2】
淘宝订单
商品 单价 数量 折扣 合计
电脑 5000 13 95 61750
手机 3000 20 88 52800
结算:114550
【程序】
public class Demo_15{
public static void main(String[] args){
//电脑
double c_price = 5000;
int c_number = 13;
double c_dis = 95;
double c_sum = c_price c_number (c_dis / 100);
//手机
double m_price = 3000;
int m_number = 20;
double m_dis = 88;
double m_sum = m_price m_number (m_dis / 100);
//结算
double sum = c_sum + m_sum;
//打印
System.out.println(“商品\t单价\t数量\t折扣\t合计”);
System.out.println(“电脑\t” + c_price + “\t” + c_number + “\t” + c_dis + “\t” + c_sum);
System.out.println(“手机\t” + m_price + “\t” + m_number + “\t” + m_dis + “\t” + m_sum);
System.out.println(“结算\t\t\t\t” + sum);
}
}
打印结果:
image.png