Java修真之练气筑基篇(持续更新)

前言

在这里插入图片描述

因为对于天蚕土豆的斗破苍穹印象还是比较深的,
所以就拿主角萧炎来说吧,练气筑基阶段是非常重要的,只有基础打得牢,才能够一路披荆斩棘,越阶战斗!
同理而言,对于刚接触Java 的小伙伴来说,Java基础也就是练气筑基过程,只有打牢基础,才能万层高楼拔地起,任凭风吹雨打不动摇!我虽然在本科期间学习过,但是现在只记得一些零零碎碎的内容,所以在研究生学余时间想系统的学习一遍。
下面就让小曾带你一起学java基础,我们来一起练气筑基!

Java基础

1.1注释、标识符、关键字

注释

相信写过代码的都知道,注释是写给我们程序员自己看的,当项目程序比较复杂的时候,注释也是相当重要的,因此养成注释的好习惯,细节决定成败。
Java中的注释有三种:
单行注释:只能注释当前行,以//开始,直到行结束
多行注释:注释一段文字,以/开始, /结束!

public class HelloWorld {
    public static void main(String[] args) {
        // 单行注释 ,不影响程序运行
        /* 多行注释
        当有很多语句需要注释掉,就可以用这种形式。小曾带你学java
         */
        System.out.println("hello,world");
    }
}

文档注释:用于生产API文档,配合JavaDoc。
【注】文档注释我们现在只作为了解,在学习JavaDoc时候我们会详细给大家说,目前知道有这样的注释就好。

关键字

代表java已经定义好的名称,比如public static class等都是已经定义好的,并赋予了相关的含义,因此我们在命名的时候尽量不要重名。
我们来看看有哪些是Java自己定义好的关键字呢?
在这里插入图片描述
虽然看起来有很多,这个上面的关键字我们在后面的学习中都会接触的,期待与上面的关键词的下一次见面吧。

标识符

标识符是指用来标识某个实体的一个符号。
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 不能用关键字作为变量名或方法名。
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary、#abc

对于java标识符的命名规则其实还是比较重要的,有时候会出现一些基础面试题里面,还是需要引起重视。

1.2数据类型

1.2.1强弱类型语言

也许有一些小伙伴们不太了解,通过java核心卷上看到,Java是一种强类型语言,意味着必须为每一个变量声明一种类型。

强类型语言

强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。也就是说,只要一个变量被指定某个数据类型,如果不经过转换,就永远是这个数据类型。
优缺点也很明显:
优点:安全性高,可以有效避免很多错误。
缺点:运行效率相对较慢。

扫描二维码关注公众号,回复: 14456850 查看本文章
弱类型语言

弱类型语言也称为弱类型定义语言。与强类型定义相反,像vb,php等就属于弱类型语言。可以将字符串’12’和整数3连接成字符串’123’

1.2.2 数据类型

Java的数据类型可以分为两大类:基本类型引用类型
在这里插入图片描述
【注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!】

下面也可以用表格来表示8中基本数据类型以及所占内存和字节范围。
对于有C语言基础的同学来说,这些基本类型都是老朋友了,是比较熟悉的。
在这里插入图片描述

 补充:对于有计算机基础的同学可以跳过,对于完全不知道的小白而言,可以了解一下字节的相关内容
 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。  字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,
  1B(byte,字节)= 8bit(位)
 字符:是指计算机中使用的字母、数字、字和符号
  ASCIIS码: 
 1个英文字母(不分大小写)= 1个字节的空间  
 1个中文汉字 = 2个字节的空间
 1个ASCII码 = 一个字节
  UTF-8编码:
 1个英文字符 = 1个字节   英文标点 = 1个字节
 1个中文 = 3个字节  中文标点 = 3个字节
Unicode编码:
 1个英文字符 = 2个字节   英文标点 = 2个字节   1个中文(含繁体) = 2个字节
 中文标点 = 2个字节  1bit表示1位, 1Byte表示一个字节 1B=8b。  1024B=1KB
 1024KB=1M    1024M=1G. 
那有人会问:电脑的32位和64位的区别是什么呢?
 32位操作系统只可以使用32位的cpu,而64位的CPU既可以安装32位操作系统也可以安装64位操作系统。
 寻址能力简单点说就是支持的内存大小能力,64位系统最多可以支达128 GB的内存,而32位系统最多只可以支持4G内存。
 32位操作系统只可以安装使用32位架构设计的软件,而64位的CPU既可以安装使用32位软件也可以安装使用64位软件。
类型转换

整型、实型(常量)、字符型数据可以混合运算
运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级(根据容量来看)
byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能导致溢出或损失精度
  • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
例子:
int i =128;
byte b = (byte)i;   //byte 类型是 8 位,最大值为127。所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
(int)23.7 == 23;       
(int)-45.89f == -45
自动类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类
byte,short,char—> int —> long—> float —> double

强制类型转换

强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类
型。 条件是转换的数据类型必须是兼容的。

public static void main(String[] args) {
		double x = 3.14;
		int nx = (int)x; //值为3,强制将double类型转换成int类型
		
		char c = 'a';
		int d = c+1;
		System.out.println(d); //98
		System.out.println((char)d); //b
}


注意:当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。
public static void main(String[] args) {
		int x = 300;
		byte bx = (byte)x; //值为44
		System.out.println(bx);
}

1.3 变量、常量

变量

变量是什么:就是可以变化的量!
举个例子:
这就好像我们家里有一个大衣柜,里面有十分多的小格子,我们给格子上贴上标签,放衣服,放鞋子,放手表等等,此时我们知道了哪里该放什么,但是,我们并不知道里面到底放的是什么牌子的鞋子,是衣服还是裤子。那个标签就相当于我们的变量,我们给他起了个名字,但是里面放什么需要我们自己去放。

需要注意的点:
1、Java是一种强类型语言,每个变量都必须声明其类型。
2、Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

基本格式:数据类型 变量名 = 值;
int a, b, c; // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22; // 声明并初始化 z
String s = "runoob"; // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量 x 的值是字符 'x'。

变量作用域

变量根据作用域可划分为三种:

  • 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
  • 实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量(lacal variable):类的方法中的变量。
示例
 public class Variable{
		static int allClicks=0; // 类变量
		String str="hello world"; // 实例变量
		public void method(){
				int i =0; // 局部变量
		}
}

常量

常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值; final double PI=3.14; final String LOVE="hello";

1.4 运算符

Java 语言支持如下运算符:

  • 算术运算符: +,-,*,/,%,++,–
  • 赋值运算符 =
  • 关系运算符: >,<,>=,<=,==,!= instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=

运算符这些方面比较简单,后面遇到了再详细介绍一下。

1.5 控制流程

顺序结构

在这里插入图片描述
顺序结构是最简单的算法结构:语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

选择结构

1、if单选择结构

我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示:
在这里插入图片描述
意义:if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。

2、if双选择结构

那现在有个需求,公司要收购一个软件,成功了,给人支付100万元,失败了,自己找人开发。这样的需求用一个if就搞不定了,我们需要有两个判断,需要一个双选择结构,所以就有了if-else结构。
在这里插入图片描述

3、if多选择结构

在这里插入图片描述

循环结构

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。
Java中有三种主要的循环结构:

  • while 循环
  • do…while 循环
  • for 循环
1、while 循环
while( 布尔表达式 ) {
	//循环内容
}

在这里插入图片描述
【图解】在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次判断是否为真。直到条件不成立,则循环结束。

2、do…while 循环

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do {
	//代码语句
}while(布尔表达式);

区别:do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
在这里插入图片描述
注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

3、For循环

虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。

优点:or循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

for(初始化; 布尔表达式; 更新) {
		//代码语句
}

在这里插入图片描述
for 循环用前须知:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语 句。
  • 然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循 环体后面的语句。
  • 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。 再次检测布尔表达式。循环执行上面的过程。
public static void main(String[] args) {
			int a = 1; //初始化
			
			while(a<=100){ //条件判断
				System.out.println(a); //循环体
				a+=2; //迭代
			}
			System.out.println("while循环结束!");
			
			for(int i = 1;i<=100;i++){ //初始化//条件判断 //迭代
				System.out.println(i); //循环体
			}
			System.out.println("for循环结束!");
}

其实也可以看出,for循环在知道循环次数的情况下,简化了代码,提高了可读性。

4、break & continue

在循环语句中,我们如果想要提前跳出循环,那样我们应该怎么办?
不用担心,break & continue 可以给你答案

break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句

示例:
public static void main(String[] args) {
		int i=0;
		while (i<100){
			i++;
			System.out.println(i);
			if (i==30){
				break;
			}
		}
}
continue 关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
for 循环中,continue 语句使程序立即跳转到更新语句
while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句

public static void main(String[] args) {
			int i=0;
			while (i<100){
				i++;
				if (i%10==0){
					System.out.println();
					continue;
				}
				System.out.print(i);
			}
	}
break & continue区别
  • break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。

  • continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

5、小实例

理论知识就是那么简单,光有理论那并不够的,还是要理论与实践相结合,今天主要讲简单的写一个打印9*9乘法表,对于小伙伴来说,这是比较简单的,下面我就来介绍一下,希望看到的小伙伴可以跟着步伐,一起学习。

打印结果:
在这里插入图片描述
思路:使用嵌套for循环

实现主要分三步走

第一步:我们先打印第一列,这个大家应该都会
for (int i = 1; i <= 9; i++) {
			System.out.println(1 + "*" + i + "=" + (1 * i));
}

第二步:我们把固定的1再用一个循环包起来
for (int i = 1; i <= 9 ; i++) {
	for (int j = 1; j <= 9; j++) {
		System.out.println(i + "*" + j + "=" + (i * j));
	}
}
第三步:去掉重复项,j<=i
for (int i = 1; i <= 9 ; i++) {
		for (int j = 1; j <= i; j++) {
			System.out.println(j + "*" + i + "=" + (i * j));
		}
}

最终完整代码:
for (int i = 1; i <= 9 ; i++) {
		for (int j = 1; j <= i; j++) {
			System.out.print(j + "*" + i + "=" + (i * j)+ "\t");
		}
		System.out.println();
}

总结:遇到问题,要慢慢养成一种如何分析问题、如何切入问题的思维,将一个大的问题抽丝剥茧,分解成若干个小问题,然后再逐一解决。

1.6 总结

上述内容,是java最基本的内容,相当于万地高楼平地起的地基,也是练气筑基的第一阶段,了解这些内容,也仅仅迈出了学习java 的第一步,让我们一起加油,努力,小曾,带你们一起学java

写作不易,欢迎大家支持,关注我即可一起学Java!

目前主要参考的书籍就是Java核心卷,目前自己也在看,就把一些基础内容,觉得重要的记录下来。
对于一些参考视频,主要是看了B站的狂神说java的基础篇,讲的浅显易懂,值得推荐!
https://space.bilibili.com/95256449? ,感兴趣的同学可以去B站看一看

猜你喜欢

转载自blog.csdn.net/qq_36317312/article/details/119118634