Java学习笔记---基础语法

本文详细介绍了Java语言的基础知识,包括发展历程、跨平台原理、JVM、JRE、JDK的关系,以及常用的DOS命令。重点讲解了Java的语法要素,如注释、关键字、常量、数据类型、变量、标识符、类型转换、运算符和表达式。还介绍了流程控制语句(如if、switch、for、while、do-while)和数组的定义、初始化、访问及遍历。此外,文章涵盖了方法的定义、调用、重载和参数传递,以及随机数的生成。
摘要由CSDN通过智能技术生成

1. Java语言的发展史

java是哪家公司哪一年推出的?
sun公司在1995推出的编程语言
java之父是谁?
詹姆斯.高斯林
java的主要发展历程?
1995由sun公司推出。
2004推出JDK1.5,这是里程碑式的版本。
2009年sun公司被oracle(甲骨文公司)收购。
目前最新版本JDK12。
java的三大技术架构
JavaSE:java标准版,主要用于桌面应用软件的开发。比如计算器,QQ软件等。
JavaEE:java企业版,基于JavaSE的企业级应用的开发。比如淘宝,京东,ERP系统等。(大型互联网)
JavaME:java微型版,应用于移动设备和电子类产品的嵌入式开发。比如手机游戏,手机软件等。(安卓,IOS,HTML,微信小程序)

2. Java语言跨平台原理

java语言的特点
java语言具有简单易学、面向对象、健壮性、安全性、与平台无关性等特点。
什么是平台?
平台即操作系统,目前主流的有微软Windows系统,苹果Mac系统,Linux系统
什么是java跨平台?
通过java语言编写的应用程序可以在不同的操作系统上直接运行。具有一次编译,到处运行的特点。
java如何实现跨平台?
通过JVM虚拟机实现的跨平台。在不同的操作系统上安装对应的JVM虚拟机。
在这里插入图片描述
java跨平台的原理
java程序并非是直接运行的, javac编译器将java源程序(.java文件)编译成与平台无关的字节码文件(.class文件),然后通过java运行工具启动java虚拟机,由java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下, 只需安装不同的java虚拟机即可实现java程序的跨平台
在这里插入图片描述

3. JVM、JRE、JDK

JVM、JRK、JDK三者之间的关系

JVM:Java虚拟机,保证java程序跨平台。 
			//JVM保证java程序的跨平台性
JRE:Java运行环境,包含JVM和核心类库。如果只是想运行java程序,只要安装JRE即可。
			//JRE=JVM+核心类库
			核心类库包括:java.util包中的Random/Scanner/Arrays等
JDK:Java开发工具包,包含JRE和开发工具。如果程序员想要开发java程序,需要安装JDK环境 
			//JDK=JRE+开发工具
			开发工具包括:编译工具javac.exe  ,运行工具java.exe 等

JVM、JRE、JDK关系图解
在这里插入图片描述

4. 常用的DOS命令

进入DOS命令行窗口
快捷键win + R打开运行窗口,输入cmd,按回车进入。
常用DOS命令

操作 说明
盘符名称 盘符切换。E:回车,表示切换到E盘
dir 查看当前路径下的内容
cd 目录 进入单级目录。cd develop,表示进入develop文件夹
cd … 回退到上一级目录
cd 目录1\目录2… 进入多级目录。cd develop\java,表示进入develop下的java文件夹
cd \ 回退到盘符根目录
cls 清屏
exit 退出命令提示符窗口

5. Path环境变量的配置

什么是环境变量
环境变量:指在操作系统中用来指定操作系统运行环境的一些参数
为什么要配置环境变量
开发java程序, 需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。 我们不可能把所有的java文件都放到JDK的bin目录下, 所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
常见配置的环境变量

环境变量名 作用
JAVA_HOME 指 JDK 安装的根目录,如:C:\develop\Java\jdk-11
PATH 指 java 开发工具的位置,如:C:\develop\Java\jdk-11\bin
CLASSPATH 指 JVM 在运行时到哪一个目录去加载字节码文件

6. 注释

注释的作用?
对代码进行解释说明,便于开发人员理解和维护代码。
注释不会被程序编译和运行。
注释的分类?
单行注释 // 注释内容,单行注释可以嵌套。
多行注释 /* 注释内容 /,多行注释不能嵌套使用。
文档注释 /
* 注释内容 */,文档注释不能嵌套使用。

7. 关键字

什么是关键字?
在java语言中有特殊意义的英文单词。
java关键字的特点?
单词全部小写。
在高级开发工具中,关键字会有特殊的颜色标记。
java中的关键字/保留字
goto和const是java中的预留关键字(goto和const也叫保留字)。
在这里插入图片描述

8. 常量

什么是常量?
在程序运行过程中,其值不可以发生改变的量。
常量的分类

字符串常量:使用双引号 "" 括起来的0到多个字符。"java" ,"程序员" , "" , "  ","A" // 大于等于0个字符
字符常量:使用单引号 '' 括起来的单个字符。 'a' , '0' ,'我' //1个字符
整数常量:正负整数  10  -20
小数常量:带小数点的数字  -3.14   5.12
布尔常量:表示真或假,只有true或false两个值
空常量:值为null,不能使用输出语句直接输出。//System.out.println(null),会编译报错
定义的final变量

9. 数据类型

java是强类型的语言,每一个数据都有对应的数据类型。
位:计算机计算的基本单位,计算机底层是二进制 0 1
字节:计算机存储的基本单位,1字节=8位。
java数据类型分类
基本数据类型:4型8种
整数:byte short int long (整数默认是:int类型)
小数:float double (小数默认是:double类型)
字符:char
布尔:boolean
引用数据类型:字符串,数组,类,接口 ,null
基本数据类型分类
在这里插入图片描述

1.定义 long 类型加L
		int number = 100L;
2.定义 float 类型加F
		int f = 10.0F;

10. 变量

什么是变量?
变量指程序运行过程中,其值在一定范围内会发生变化的量。
变量的定义格式

数据类型 变量名 = 初始化值
int a = 12;

变量的分类

成员变量:(也叫全局变量,字段)
	直接定义在类中,方法外,默认有初始值
	1.类成员变量:使用static修饰符修饰的成员变量
	2.实例成员变量:没有使用static修饰符修饰的成员变量
局部变量:变量除了成员变量之外,其他就是局部变量
	分为:方法形参,方法内变量,代码块变量
	没有初始化值,必须先初始化才能使用

变量使用的注意事项

1、变量可以定义时初始化,也可以先定义,使用前进行初始化。
	//定义的时候初始化
	double d = 3.14;
	//先定义,后初始化
    double d;
    d = 3.14;
    
2、没有初始化的变量不能直接使用。
    int a ;
    System.out.println(a);  //编译报错,
	
3、相同范围内,变量名不能重复。

	//第一种:方法的形参上变量名不能相同
    public static void sum(int a,int a){ //编译报错

    }
    //第二种:一对 {} 内变量名不能相同
    public static void sum(){
        int a = 10;     //编译报错
        int a = 20;		//编译报错
    }

4、整数默认是int类型,定义long类型时需要加L 或者l,建议加L。
	long num = 10L;

5、小数默认是double类型,定义float类型的时候需要在数字后面加F或者f,建议加F。
	float f = 3.14F;

6、一行代码上可以定义多个变量。(不推荐)
	int a=10,b=20;

    int a,b =20;
    a=10;

变量的生命周期

存在位置 生命周期开始 生命周期结束 在内存中的位置
类成员变量 使用static修饰的成员变量 当所在字节码被加载进JVM 当JVM停止 方法区
实例成员变量 没有使用static修饰的成员变量 当创建所在类的对象的时候 当该对象被垃圾回收器回收
局部变量 方法形参,代码块中,方法内 当代码执行到初始化变量的时候 所在的方法/代码块结束

11. 标识符

标识符的作用
给 包,类,方法,变量起名的符号。
标识符的组成规则
大小写英文字母、数字、下划线_、美元符$、中文(不推荐)
注意事项:
1、不能是数字开头
2、不能是关键字
3、区分大小写
标识符的命名规范
小驼峰式命名:变量名、方法名
第一个单词首字母小写,从第二个单词开始每个单词的首字母大写。

userName,maxValue等

大驼峰式命名:类名
每个单词的首字母都大写。

String, ArrayList等

建议:标识符的起名尽量做到见名知意。

12. 类型转换

隐式类型转换(自动类型转换)
从范围小的类型到范围大类型的转换,系统会自动进行类型提升,称为自动类型转换。
在这里插入图片描述

1.boolean不参与类型转换
2.byte不能自动类型转换为char
3.char不能自动类型转换为short
4.short不能自动类型转换为char

强制类型转换
从范围大的类型到范围小的类型的转换,需要进行强制类型转换。
格式:

目标数据类型 变量名 = (目标数据类型)变量值(常量值);

弊端:会造成数据精度丢失。尽量少用强制转换。
在这里插入图片描述

1.boolean不参与类型转换
2.char可以强制类型转换为byte
3.short可以强制类型转换为char
4.char可以强制类型转换为short

13. 运算符和表达式

运算符:对常量或者变量进行操作的符号。
表达式:通过运算符连接起来的式子

例如:
+ 是运算符,10 + 20 是表达式
- 是运算符,a - b   是表达式

常用的运算符
算术运算符、赋值运算符、自增自减运算符、关系运算符、逻辑运算符、三元运算符

13.1 算术运算符

符号 作用 说明
+ 对数字进行加法运算,对字符串进行拼接
- 进行减法操作
* 进行乘法操作
/ 整数相除的结果只能是整数,想要得到小数,必须有浮点数参与运算。 a / b ,获得 a 和 b 的商
% 取余 a%b 获得 a 和 b 相除的余数

13.1.1 表达式类型提升

byte、short、char变量之间进行运算时,类型自动提升为int。
变量参与运算时,最终结果以最高类型为准。
在这里插入图片描述

/*
	表达式类型提升:
		1. byte、short、char变量之间进行运算时,类型自动提升为int。
		2. 变量参与运算时,最终结果以最高类型为准。
*/
public class OperatorDemo02 {
	public static void main(String[] args) {
		
		// 1、byte、short、char变量之间进行运算时,类型自动提升为int。
		byte b = 10;
        
         //编译报错,b+5,变量b会自动提升为int类型,运算结果为int,赋值给byte需要强转。
		// byte b2 = b + 5;  
       
		int b2 = b+5; 
		System.out.println(b2);
		
		// 2. 变量参与运算时,最终结果以最高类型为准。
		int num1 = 10;
		long num2 = 20L;
		long num3 =  num1 + num2; //int + long --->long
		System.out.println(num3);
	}
}

13.1.2 字符的 + 运算

字符参与运算的规则:
将字符换算成编码表里对应的数值进行运算。
等价于:把char类型数据换成对应的十进制数来参与运算
编码表:
计算机底层使用二进制运算,所以文字和符号必须转换成二进制数才能被计算机识别,编码表就是将文字等符号编成对应的数的表格,因为二进制记录起来比较麻烦,所以使用十进制数进行文字编码。
世界上第一张编码表ASCII(美国标准信息交换码)。常用编码表都兼容ASCII码表。
常用的编码:
ASCII编码:美国标准信息交换码,世界上第一张编码表。
GB2312编码:简体中文编码,对常用汉字进行了编码,兼容ASCII。
GBK:加强版的中文编码表,对更多汉字进行了编码,兼容ASCII
UTF-8编码:万国码表,常作为浏览器上的网页编码,可以统一显示各国文字,兼容ASCII。
常见字符对应的十进制数:
‘ a’ ~ ‘z’ : 97 ~ 122
‘A’ ~ ‘Z’ : 65 ~ 90
‘0’ ~ ‘9’ : 48 ~ 57
基本汉字:19968 ~ 40869
char类型表示的范围:0~65535
ASCII编码表
在这里插入图片描述

/*
	字符参与运算的规则:
		将字符换算成编码表里对应的数值进行运算。
*/
public class CharDemo2{
	public static void main(String[] args){
		//a~z  97~122
		//A~Z  65-90
		//0~9  48~57
		//基本汉字:19968 ~ 40869
	
		char c = 'a';
		int b = c + 10;
		System.out.println(b); //c是char类型,参与运算先转为十进制,在参与运算 //107
		
		char  c2 = 97;
		System.out.println(c2); //c2是char,打印c2就是打印他的char类型数据 //a
		
		//char类型范围 0~65535
		// char c3 = 65536;  //报错,超过了char的范围
		
		int c3 = '中';
		int c4 = '国';
		
		System.out.println(c3); //20013
		System.out.println(c4); //22269
		
		char c5 = 20013;
		char c6 = 22269;
		System.out.println(c5); //中
		System.out.println(c6); //国
		
		char c7 = '9';  //9
		char c8 = 57;  //9
		char c9 = 9; //打印的结果不是数字9,而是9对应的编码表的符号73
	}
}

13.1.3 字符串的+运算

与字符串进行 “+” 运算,是进行字符串拼接操作,运算结果还是字符串。
字符串只能进行 + 运算

//字符串的加法运算
public class StringAddDemo{
	public static void main(String[] args){
		int age = 25;
		System.out.println("我的年龄是:"+age+"岁"); //输出结果:我的年龄是:25岁
	}
}

13.2 赋值运算符

赋值运算符作用
将表达式或者常量值赋给变量。
赋值运算符分类

符号 作用 说明
= 赋值 a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a×b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a

注意:扩展的赋值运算符隐含了强制类型转换。

/*
	赋值运算符:
		扩展赋值运算符隐含了强制类型转换
*/
public class FuZhiDemo {
	public static void main(String[] args) {
		//1. 基本赋值运算符 =
		int a = 10;
		System.out.println(a);
		
		//2. 扩展赋值运算符
		int b = 20;
		// b+=5;
		// b-=5;
		// b*=5;
		// b/=5;
		b%=5;  //b = b%5; 
		System.out.println(b);//0
		
		// 3. 扩展赋值运算符隐含了强制类型转换
		byte num = 10;
		num+=5;  // 相当于:num = (byte)(num+5);
        
        // num  = num + 5; //报错
        
        System.out.println(num);	
	}
}

13.3 自增自减运算符

1、++ 、 – 可以放在变量的前面,也可以放在变量的后面。
单独进行运算时放在前面或者后面,效果一样。
2、参与其他运算的时候:
a++ :先将a的值参与其他运算,运算结束后再自身加1。
++a :先将a自身加1,再将自增后的值参与其他运算。
自减与自增规则相同。
3、最常见用法:单独使用。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值