Java从入门到精通第一版(Java基础)

时间:2024-10-14 14:10:10

Java从入门到精通第一版(Java基础)

  • 一. 软件的安装
    • 1. JDK的安装
    • 2. IDEA的安装
  • 2. HelloWorld案例
  • 3. Java注释
  • 4. Java常量
  • 5. Java数据类型
  • 6. Java变量
  • 7. 类型转化
    • 7.1. 自动类型转化
    • 7.2 强制类型转化
  • 8. 运算符
      • 8.1 算数运算符
      • 8.2 字符串的+操作
      • 8.3 赋值运算符
      • 8.4 自增自减运算符
      • 8.5 关系运算符
      • 8.6 逻辑运算符
      • 8.7 短路逻辑运算符
      • 8.8 三元运算符
  • 9. 数据输入
  • 10. 流程控制
      • 10.1 顺序结构
      • 10.2 分支结构
          • 10.2.1.1 if语句
          • 10.2.1.2 if...else语句
          • 10.2.1.3 if...else if 语句
          • 10.2.2 switch语句
      • 10.3 循环结构
          • 10.3.1 for 循环

一. 软件的安装

1. JDK的安装

首先我们打开JDK的官网:传送门,https://www.oracle.com/java/technologies/downloads/
进去之后,我们往下面翻,找到这里
在这里插入图片描述
根据你们自己的电脑进行安装,安装我就不演示了,直接无脑的点下一步,然后算个安装路径就行了
安装好后打开你的安装目录,点开bin目录然后复制上面的路径,然后去添加一下环境变量即可
然后再打开cmd,输入

javac -version
  • 1

在这里插入图片描述
如果出现这样的画面就说明你成功了

2. IDEA的安装

首先打开IDEA的官网:传送门 /idea/download/#section=windows
然后点击Download,下什么版本随你。下载好后运行。
在这里插入图片描述
在这里插入图片描述
然后有一个重点就是这里
在这里插入图片描述
这几个全选,那个32位的64位的应该没有(我懒得重装了,这是找的网图)
剩下几个都是选next,然后等待安装就行了
按好了之后,可能要重启,也可能不要,我们直接双击,打开,新建一个项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
然后他会自动生成着一些文件:
在这里插入图片描述
我们所有的Java文件都要放在这个src文件夹里
如果你也想让你的IDEA和我一样好看的话,就请看这篇文章:传送门

下面我们就开始正式的教学

2. HelloWorld案例

我们右键src文件夹,选择
在这里插入图片描述
然后他会自动生成:

public class hello{
}
  • 1
  • 2

我们把它改成:

public class hello{
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果:
在这里插入图片描述
记住,Java跟Python一样,所有的符号都要是英文的!!!

3. Java注释

在Java中有两种注释分别是://

public class hello{
    public static void main(String[] args) {
        System.out.println("Hello World!"); // 我是注释
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

还有:/**/

public class hello{
    public static void main(String[] args) {
    /*
		我也是注释
	*/
        System.out.println("Hello World!"); 
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

// 是单行注释,/**/是多行注释

4. Java常量

  • 常量类型 ---------------- 说明-----------------------举例
  • 字符串常量 -------用双引号括起来的 ---------”Hello World“
  • 整数常量----------不带小数的数字-------------666, -88
  • 小数常量----------带小数的数字----------------3.14, -5.21
  • 字符常量---------用单引号括起来的-----------’A‘, ‘0’, ‘我’
  • 布尔常量---------布尔值表示真假--------------只有两个值:true和false
  • 空常量-----------一个特殊的值,空常量------值为:null

5. Java数据类型

	  数据类型      关键字      内存占用              取值范围
					byte		1				 -128 ~ 127
		整数        short		2				-32768 ~ 32767
					int			4		    -231次方 ~ 231次方-1
					long		8			-263次方 ~ 263次方-1
====================================================================================
		浮点数		float		4		负数:-3.402823E+38 ~ -1.401298E-45
										正数: 1.401298E-45 ~ 3.402823E+38
					double		8		负数:-1.797693E+308 ~ -4.9000000E-324
										正数: 4.9000000E-324 ~ 1.797693E+308
====================================================================================
		字符			char		2				   0 ~ 65535
====================================================================================
		布尔			boolean		1				 true, false

	说明:E+38表示是乘1038次方, 同样, E-45表示乘10的负45次方
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

6. Java变量

变量就是在程序运行过程中,其值可以发生改变的量
从本质上讲,变量是内存中的一小块区域
创建变量的语法:

	type name = value
  • 1

举例:

int My = 2;
  • 1

我们可以直接输出:

public class test_1 {
    public static void main(String[] args) {
        int My = 2;
        System.out.println(My);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
注意:Java中的变量只能以字母,下划线为开头,不可以以数字作为开头,而且不能和Java关键字相同
比如说:class就不能作为一个变量,但Class可以

7. 类型转化

7.1. 自动类型转化

把一个表示数值范围小的数值或者变量赋值给另一个表示数据范围大的变量
范例:double d = 10;

	表示数据范围从小到大图
	byte ---> short------|
						int --- long --- float --- double
			   char------|
  • 1
  • 2
  • 3
  • 4

7.2 强制类型转化

格式:目标数据类型 变量名 = (目标数据类型)之后这变量
范例:

int k = (int)88.88
  • 1

8. 运算符

8.1 算数运算符

			符号              作用
			 +-*/                除		结果取商
			 %               取余		结果取余数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.2 字符串的+操作

字符串就是由一堆字符组成的但在Java中我们一般都用char在Python中用string
那字符串的+操作是什么呢,就是把两个字符拼在一起,比如说:

char a = 'A'
char b = 'B'
System.out.println(a + b);
  • 1
  • 2
  • 3

(这里我就不写完整代码了)
然后输出
在这里插入图片描述
我们看到输出的结果是131,这是为什么呢,我们本来想的是输出AB对吧
可在计算机运行的时候,他是把他当作一个数值来进行运算的
学过C/C++应该都知道,这是ascall码,在ascall码中,大写的A代表65,B就是66,那两个一相加不就是131么。
但是,字符不能和其他类型的数据相加,不然会报错:
在这里插入图片描述
但输出的时候还是可以的:
在这里插入图片描述

8.3 赋值运算符

		符号					作用						说明
		  =				    赋值					a=10,将10赋给变量a
		 +=				   加后赋值				a+=b,将a+b的值给a
		 -=				   减后赋值				a-=b,将a-b的值给a
		 /=				   除后赋值				a/=b,将a除以b的值给a
		 %=				   取余后赋值			a%=b,将a除以b的余数给啊
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.4 自增自减运算符

		符号					作用						说明
		++					自增					变量的值加1
		--					自减					变量的值减1
  • 1
  • 2
  • 3
  • 注意事项:
  • ++和- -既可以放在变量的后面,也可以放在变量的前面
  • 单独使用的时候,++和- -无论是放在变量的前面还是后面,结果都是一样的
  • 参与操作的时候,如果放在变量的前面,先拿变量参与操作,后拿变量做++或者- -
    参与操作的时候,如果放在变量的后面,先拿变量做++或者- -,后拿变量参与操作

8.5 关系运算符

		符号							说明
		 ==					a==b 判断a和b的值是否相等,成立为true,不成立为false
		 !=					a!=b 判断a和b的值是否不相等,成立为true,不成立为false
		  >					a>b 判断a是否大于b,成立为true,不成立为false
		 >=					a>=b 判断a是否大于等于b,成立为true,不成立为false
		  <					a<b 判断a是否小于b,成立为true,不成立为false
		 <=					a<=b 判断a是否小于等于b,成立为true,不成立为false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 注意事项:
  • 关系运算符的结果都是boolean类型,要么是true,要么是false
  • 千万不要把"=="写成“=”

8.6 逻辑运算符

		符号				作用						说明
		 &			   逻辑与		  a&b,a和b都是true,结果为true,否则为false
		 |			   逻辑或		  a|b,a和b都是false,结果为false,否则为true
		 ^			  逻辑异或		  a^b,a和b结果不同为true,相同为false
		 !			   逻辑非		  !a,结果和a的结果正好相反
  • 1
  • 2
  • 3
  • 4
  • 5

这里我就不多细讲了,给大家一串代码,自己运行体会一下(要我讲我也讲不清楚2333)

public class test_02 {
    public static void main(String[] args) {
        int i = 10;
        int j = 20;
        int k = 30;

        // & 有false则false
        System.out.println((i > j) & (i > k)); // false & false
        System.out.println((i < j) & (i > k)); // true & false
        System.out.println((i > j) & (i < k)); // false & true
        System.out.println((i < j) & (i < k)); // true & true
        System.out.println("--------");
        // | 有true则true
        System.out.println((i > j) | (i > k)); // false | false
        System.out.println((i < j) | (i > k)); // true | false
        System.out.println((i > j) | (i < k)); // false | true
        System.out.println((i < j) | (i < k)); // true | true
        System.out.println("--------");
        // ^ 相同为false,不同为false
        System.out.println((i > j) ^ (i > k)); // false | false
        System.out.println((i < j) ^ (i > k)); // true | false
        System.out.println((i > j) ^ (i < k)); // false | true
        System.out.println((i < j) ^ (i < k)); // true | true
        System.out.println("--------");
        // !
        System.out.println((i > j)); // false
        System.out.println(!(i > j)); // !false
        System.out.println(!!(i > j)); // !!false
        System.out.println(!!!(i > j)); // !!!false
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

8.7 短路逻辑运算符

		符号				作用						说明
		 &&			   短路与			作用与&相同,但有短路作用
		 ||			   短路或		    作用与|相同,但有短路作用
  • 1
  • 2
  • 3

我们先看&和&&的区别:
在这里插入图片描述
这里我先给i=10,j=20,然后分别进行++操作在跟100比较一下。那毋庸置疑,肯定比100小所以是false
然后我们在输出i和j,他们都进行了++操作,然后我们再看&&
在这里插入图片描述
这里我们发现 j 并没有进行++操作,那是为什么呢
很显然只要 (j++ > 100) 运行了那么它的值就一定不可能是20,所以很明显这句话都没有运行
这就是我刚刚所讲的“短路”如果前面为false那后面的就直接不执行了,|| 也同理

  • 注意事项:
  • 逻辑与 &,无论左边真假,右边都要执行
    短路与 &&,如果左边为真,右边执行;如果左边为假,右边不执行
  • 逻辑或 |,无论左边真假,右边都要执行
    短路或 ||,如果左边为假,右边执行;如果左边为真,右边不执行

8.8 三元运算符

  • 格式:关系表达式?表达式1:表达式2
  • 范例:a > b ? a : b
  • 计算规则:
		首先计算关系表达式的值
		如果值为true,表达式1的值就是运算结果
		如果值为false,表达式2的值就是运算结果
  • 1
  • 2
  • 3

下面有一段代码,你们可以对着这个格式自己试一试:

public class test_04 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

9. 数据输入

我们先用Python的角度来思考这个问题:

a = input("")
  • 1

完事,对吧
那我们用Java怎么实现呢?
在Java他给我们提供了Scanner这个类来用于数据的输入,那这个类该怎么用呢?
共分为三个部分:

  • 1.导包
import java.util.Scanner;
导包的代码必须出现在类定义的上面:
  • 1
  • 2

在这里插入图片描述

  • 2.创建对象
Scanner sc = new Scanner(System.in);
上面这个格式里,只有sc是变量名,可以变,其他的都不能变
  • 1
  • 2
  • 3.接收数据
int i = sc.nextInt();
就是这个格式,这里只有i是变量可以改,其他的我们以后会讲
  • 1
  • 2

10. 流程控制

我们先来说一下流程控制语句的分类:

  • 顺序结构
  • 分支结构(if, switch)
  • 循环结构(for, while, do...while)
    那我们就按顺序来讲

10.1 顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法,按照代码的先后顺序,依次执行,程序中大对数的代码都是这样执行的。简单来说,就是我的代码按照一行一行的有顺序的去执行

10.2 分支结构

10.2.1.1 if语句

格式:

if (关系表达式) {
	语句体;
}
  • 1
  • 2
  • 3

执行流程:
首先计算关系表达式的值
如果为true就执行
如果为false就不执行
继续执行后面的语句
这个事实上就跟Python里的

if xxxxxx:
	xxxxxxx
  • 1
  • 2

一个意思,就是
在这里插入图片描述
这里要加个括号,然后整个if 语句的语句体要用大括号框起来就像Python中的 : 冒号
在这里插入图片描述

10.2.1.2 if…else语句

格式:

if (关系表达式) {
	语句体;
} else {
	语句体;
}
  • 1
  • 2
  • 3
  • 4
  • 5

你也可以这么写:

if (关系表达式) {
	语句体;
} 
else {
	语句体;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

一样的
这就跟Python的这个一样的:

if xxxxx:
	xxxx
else:
	xxxx
  • 1
  • 2
  • 3
  • 4

给大家看一个大概的流程图:
在这里插入图片描述

10.2.1.3 if…else if 语句

这个其实也不用多说什么了
格式:

if (关系表达式) {
	语句体;
} else if {
	语句体;
}
  • 1
  • 2
  • 3
  • 4
  • 5

同理:

if (关系表达式) {
	语句体;
} 
else if (关系表达式) {
	语句体;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Java中的else if 其实就跟Python里的elif 一样的,我也就不多说了
记住,else不用加条件,但else if 要加

10.2.2 switch语句

switch语句对于学过C/C++的朋友应该很熟悉,语法也都差不多
不多废话了,直接上格式:

switch (表达式) {
	case1:
		语句体;
		break;
	case2:
		语句体;
		break;
	.....
	default:
		语句体;
		break; (这个可加可不加)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

格式说明:

  • 表达式:取值为byte, short, int, charJDK5以后可以是枚举,JDK7以后可以是String
  • case:后面跟的是要和表达式进行比较的值
  • break:表示终端,结束的意思,用来结束switch语句
  • default:表示所有情况都不匹配的时候就执行该处的内容,和if语句的else相似
    在这里插入图片描述

10.3 循环结构

10.3.1 for 循环

(未完待续,有时间就跟新)