发表时间:2022-03-26来源:网络
Java诞生于1995年,原属于SUN公司,2009年4月20日,美国数据软件巨头甲骨文公司(Oracle)宣布以74亿美元收购SUN公司。Java是最受欢迎的开发语言,已经火了20年,并将继续引领着IT的编程语言。Java的LOGO是一杯热气腾腾的咖啡,真的是令人回味无穷
传统语言

Java语言

我们可以对Java程序进行编译操作,编译后生成一种和平台系统无关的文件——字节码文件(.class)。但是此时Windows、Linux均不能执行字节码文件,只有Java虚拟机(JVM)可以识别字节码文件,那么为了在Windows系统上运行该Java程序,我们就只能在Windows平台上安装Windows版本的JVM,如果要在Mac系统上运行,那么得安装Mac版本的JVM,总结来说就两点:
Java编译后生成和平台无关的.class文件jvm是平台相关的在这里进行编译操作的工具叫做javac,启动JVM并把字节码加载进JVM的工具叫做java

JRE(Java Runtime Environment):Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM,一般在只运行程序而不开发程序的服务器中安装
JDK(Java Development Kit):Java开发工具,包含开发Java程序的所有工具如javac和java等,JDK包含JRE,如果已经安装了JDK就不必安装JRE
JVM(Java Virtual Machine):Java虚拟机,它是运行所有Java程序的虚拟计算机。JVM是不跨平台的,在Windows下装Windows版的JVM,在Linux下装Linux版的JVM

Java提供3种注释类型:
单行注释//这是单行注释 //快捷键:Ctrl+/ 多行注释/* 我是多行注释 快捷键为:打/* 再按回车 */ 文档注释 /* * * 我是文档类型 * 快捷键为:打/*然后按几下tab键 */多行注释之间彼此都不能交叉嵌套,因为/会找举例自己最近的/符号,组成一个注释语句块,上图中单独的*/符号就不能被编译器识别了
关键字
关键字:在编程语言中事先定义的,有着特殊含义和用途的单词
保留字
保留字:和关键字一样是编程语言事先定义好的,只是说现在暂时没有特殊的功能,但说不定以后某天会突然被赋予功能,因此被保留下来的单词。比如goto和const就是保留字
在写代码的时候为了增强代码的阅读性,我们会自定义很多名字如:类名、方法名、变量名等。在编程的里,我们把这种为了增强程序阅读性而自定义的名称,称为标识符
标识符的命名规则:
由字母、数字、下划线、$组成,但不能以数字开头(注:此处的字母可以是中文、日文等)大小写敏感不能使用Java中的关键字和保留字不能用Java中内置的类名
注意:Java只有8大数据类型,String不属于基本数据类型,他属于引用数据类型
常用的整数类型是int和long,byte和short基本不用,常用的小数类型是double,float基本不用。因为double是不精确的,在实际开发中表示精确的小数我们使用BigDecimal类

变量是内存中一块区域,可以往该区域存储数据,修改里面的数据,也可以获取里面的数据,一个变量如果没有被初始化,就意味着没有分配内存空间来存储,就不能使用
定义变量的语法格式如下:
String,表示类型,这里可以写任何的类型name:变量名,和我们的姓名一样理解, 没有为什么=:赋值运算符,后面会讲,意思是将右边的值赋值给左边的变量“xiaolin”:一个字符串类型的值,如果是其他类型,不要加引号

变量的几个特点:
占据着内存中某一块存储区域该区域有自己的变量名和数据类型可以被重复使用该区域的变量值可以在同一个类型的范围内不断地变化变量的使用注意如下几点:
变量必须是先声明再使用,并且初始化后才可以使用(定义包装类除外)定义变量必须有数据类型变量从开始定义到所在的作用域内可以使用,出了作用域之外就不可以使用了,且在同一作用域内,变量名不可以重复常见的几种变量类型的定义:
public class VarDemo{ public static void main(String[] args) { //byte类型变量 byte b = 20; System.out.println(b); //short类型变量 short s = 20; System.out.println(s); //int类型变量 int i = 20; System.out.println(i); //long类型变量,使用L后缀 long l = 20L; System.out.println(l); //float类型变量,使用F后缀 float f = 3.14F; System.out.println(f); //double类型变量 double d = 3.14; System.out.println(d); //char类型变量 char c = 'A'; System.out.println(c); //boolean类型变量 boolean bb = true; System.out.println(bb); //String类型变量 String str = "你好"; System.out.println(str); } }思路
把num1的值存储到临时变量temp中去把num2的值赋给num1变量把temp存储的值赋给num2变量
实现代码
public class ChangVarDemo{ public static void main(String[] args) { int num1 = 10; int num2 = 20; System.out.println("num1=" + num1); System.out.println("num2=" + num2); //-------------------------------- //交互操作 int temp = num1; num1 = num2; num2 = temp; //-------------------------------- System.out.println("num1=" + num1); System.out.println("num2=" + num2); } }表达式(expression),是由数字、运算符、括号、常量、变量等以能求得结果的组合

在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规则如下图。一般的,byte、short、char三种类型相互之间一般不参与转换操作,按照转换方式,有两种(注意:boolean类型不参与类型转换):
自动类型转换:范围小的数据类型直接转换成范围大的数据类型,小->大强制类型转换:范围大的数据类型强制转换成范围小的数据类型,大->小
自动类型转换,也称为“隐式类型转换,就是把范围小的数据类型直接转换成范围大的数据类型
转换规则:byte、short、char—>int—>long—>float—>double
注意事项:byte、short、char相互之间不转换,他们参与运算首先转换为int类型
语法格式:范围大的数据类型 变量 = 范围小的数据类型值
public class TypeConvertDemo1{ public static void main(String[] args) { //把int类型变量转为long类型 long longNumber = 17;//整数默认为int类型 //把long类型转换为float类型 float f1 = longNumber; //把float类型转换为double类型 double d = f1; //定义两个int类型的变量 int a1 = 2; int b1 = 3; int c1 = a1 + b1; //定义一个byte类型,一个int类型 byte b2 = 2; int c2 = 3; System.out.println(b2 + c2); //byte、short、char类型参与运算时把自己提升为int类型 //byte d1 = b2 + c2;//编译报错 int d3 = b2 + c2;//编译通过 } }当一个算术表达式中,包含多个基本数据类型的常量或变量(boolean除外)时,整个算术表达式的结果类型将出现自动提升,其规则是:
所有的byte、short、char类型被自动提升到int类型,再参与运算
整个表达式的最终结果类型,被提升到表达式中类型最高的类型
System.out.println('a' + 1);//98 byte b = 22; b = b + 11;//编译出错,此时结果类型应该是int double d1 = 123 + 1.1F + 3.14 + 99L ;结论:算数表达式结果的类型就是其中范围最大的数据类型。
强制类型转换,也称为“显式类型转换”,就是把范围大的数据类型强制转换成范围小的数据类型
# 语法格式: # 范围小的数据类型 变量 = (范围小的数据类型)范围大的数据类型值;注意:一般情况下不建议使用强转,因为强转有可能损失精度
public class TypeConvertDemo2{ public static void main(String[] args) { int a = 2; byte b = 3; //自动类型转换 int c = a + b; //强制类型转换 byte d = (byte) (a + b); //把double转换为int类型 int i = (int)3.14; System.out.println(i);//3 } }对常量和变量进行操作的符号称为运算符
常见的运算符分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、三元运算符
自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。
自减:-- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。
以++为例:
a++和++a结果都是让a的值自增1,如果只是需要自增的话,使用哪一种都可以
但是他们俩有唯一的区别:
前置(++a): 表示对a加1之后的结果进行运算,先加后用后置(a++):表示对a变量加1之前的值(原始值)进行运算,先用后加public class ArithmeticOperatorsDemo2{ public static void main(String[] args) { int a1 = 5; int b1 = ++ a1; System.out.println("a1=" + a1 + ",b1=" + b1);//a1=6,b1=6 int a2 = 5; int b2 = a2 ++; System.out.println("a2=" + a2 + ",b2=" + b2);//a2=6,b2=5 } }比较底层的解释
++a表示取a的地址,增加它的内容,然后把值放在寄存器中
a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值
三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else(如果什么情况就做什么,否则做什么)
语法格式:数据类型 变量 = boolean表达式 ? 结果A :结果B
表达的意思,boolean表达式结果:
为true,则三元运算符的结果是结果A为false,则三元运算符的结果是结果B注意:
三元运算符必须定义变量接受运算的结果,否则报错三元运算符结果的类型由结果A和结果B来决定的,结果A和结果B的类型是相同的逻辑运算符用于连接两个boolean表达式,结果也是boolean类型的
运算符运算规则示范结果&与false & truefalse|或false | truetrue^异或true ^ falsetrue!非!truefalse&&短路与false && falsefalse||短路或false || falsetrue规律:
非:取反,!true则false,!false则true
与:有false则false
或:有true则true
异或:^ 相同则false,不同则true
& :&左边表达式无论真假,&右边表达式都进行运算
&& :如果&&左边表达式为真,&&右边表达式参与运算,否则&&右边表达式不参与运算,故称短路与
| 和 || 的区别同理,||,左边为真,右边不参与运算
public class LogicalOperatorDemo2 { public static void main(String[] args) { System.out.println(false & 1 / 0 == 1);//报错,说明右边执行了 System.out.println(false && 1 / 0 == 1);//不报错,说明右边没有执行 System.out.println(true | 1 / 0 == 1);//报错,说明右边执行了 System.out.println(true | 1 / 0 == 1);//不报错,说明右边没有执行 } }
具有相同类型的多个常量值有序组织起来的一种数据形式,数组中使用索引来表示元素存放的位置,索引从0开始,步长是1,有点像Excel表格的行号

注意:
可以把int[] 看成一种数据类型,int类型的数组类型int[]数组表示,这个数组中的元素都是int类型的,同理数组在定义后,必须初始化才能使用。所谓初始化,就是在堆内存中给数组分配存储空间,并为每一个
元素赋上初始值,有两种方式:静态初始化和动态初始化,数组的长度是固定的,无论以哪种,一旦初始化完成,数组的长度(元素的个数)就固定了,不能改变,除非重新对该初始化,初始化时,如果我们明确了具体的元素就用静态初始化,如果还不知道具体放哪些元素,只知道个数,用动态初始化
我们直接为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定
语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,…};
int[] nums = new int[]{1,3,5,7,9}; //简单写法: int[] nums = {1,3,5,7,9};//简单写法,定义和初始化必须同时写出来
若 num = null,则null表示不再引用堆中的内存空间,那么此时nums就好比是没有初始化的,不能使用
程序员只设置数组元素个数,而数组的元素的初始值由系统(JVM)决定
语法:数组元素类型[] 数组名 = new 数组元素类型[length];
int[] nums = new int[5];
注意:不能同时指定元素值和数组长度,int[] nums = new int[5]{1,3,5,7,9}是错误的
内存图与静态初始化一样,只是拥有默认值
int size = 数组名.length;
nums[1] = 30;
元素类型 变量名 = 数组名[index];
操作了一个尚未初始化或者没有分配内存空间的数组
ArrayIndexOutOfBoundsException:数组的索引越界异常操作的数组的索引不在[0,数组名.length-1]范围内
使用for-each操作数组更简单,因为可以不关心索引,其底层原理依然是上述的for循环操作数组
在之前,数组的每一个元素就是一个个的值,这种数组我们称之为一维数组。二维数组,就是数组中的每一个元素是另一个一维数组
静态
public class ArrayInArrayDemo1 { public static void main(String[] args) { //定义三个一维数组 int[] arr1 = { 1, 2, 3 }; int[] arr2 = { 4, 5 }; int[] arr3 = { 6 }; //把三个一维数组存储到另一个数组中,那么该数组就是二维数组 int[][] arr = new int[][] { arr1, arr2, arr3 }; } }二维数组中的元素类型是一维数组,把数组元素类型[]看成一个整体,表示数据类型
动态
数组元素类型[][] 数组名 = new 数组元素类型[x][y]; x表示二维数组中有几个一维数组 y表示每一个一维数组中有几个元素。 int[][] arr = new int[3][5];for循环
for (int index = 0; index int ele = arr2[j]; System.out.println(ele); } System.out.println("-----"); }for-each
for (int[] arr2 : arr) { //arr2为每次遍历出来的一维数组 for (int ele : arr2) { //ele为从arr2一维数组中遍历出来的元素 System.out.println(ele); } System.out.println("-----"); }方法:为了完成某一特定功能(如:求和,统计数量等)的代码块
语法格式:
修饰符] 返回值类型 方法名称(参数类型 参数名1,参数类型 参数名2,…) { 方法体; [return 返回值;] }格式分析:
修饰符:public、static等,static修饰的方法直接使用类名调用即可,用static修饰的方法都属于类的返回值类型:限定返回值的类型,方法在完成一个功能后,是否需要给调用者返回一个结果? 如果需要给调用者返回结果,就写上返回数据的类型如果不需要给调用者返回结果,就用关键字void,表示没有返回结果方法名称:用于调用方法,遵循标识符规范,首字母小写,采用驼峰命名法,见名知意形式参数:方法中圆括号中的变量,可以有多个形式参数方法体:编写如何完成该功能的代码return关键字的作用 把返回值给方法的调用者结束该方法,在return后不可以再学任何语句当方法体中没有return时,方法的返回值类型必须为void实际参数:在调用某一个具体方法1时,实际传递的参数值如果一个需要返回值,那么一定要保证在任何条件下都必须得有返回值注意事项
方法必须定义到类中,在java中最小的程序单元是类一个类中可以定义多个方法方法和方法之间是平行的,不能在一个方法中定义另一个方法(相当于不可以在一个房子里面建房子)方法定义没有先后顺序如果方法有static修饰,可以直接用方法所在的类的类名调用,如果没有static修饰,那么必须使用实例化对象来调用
参数列表:参数的类型+参数的个数+参数的顺序
方法签名:方法名称+方法的参数列表
在同一个类中,方法签名是唯一的,否则编译报错
方法的重载:在同一个类中,允许某方法存在一个或者多个同名的方法,但是必须参数列表不同
方法重载判断的原则:两同一不同
两同:在同一个类中,方法名是相同的
一不同:方法的参数列表不同(参数类型、参数个数、参数顺序),只要参数类型、参数个数、参数顺序其中有一个不同,都成为参数列表不同
方法的重载和返回值类型无关,只是一般都要求返回值类型相同
解决了同一功能的方法由于参数不同所造成的方法名称不同而需要重复命名的问题
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-03-26
2022-02-14