1。Java基础基础知识
目录:
一、Java概述
1。Java体系
2。常用的DOS命令
3。JDK、JRE、跨平台、Java平台
4。Java代码的编写执行过程
5。注释
6。关键字、标识符
7。Java中的数据类型
8。Java中的常量
二、变量和运算符
1。变量和计算机存储单元
2。数据类型和常量
3。数据类型转换
4。运算符和优先级
三、引用数据类型、流程控制语句和数组
1。引用数据类型
2。流程控制语句
3。数组
四、方法
1。引入
2。语法格式
3。方法调用
4。注意事项
5。方法重载
6。可变参数列表一、Java概述1。Java体系java是一个体系,包含:java语言运行在各种平台上的虚拟机class字节码文件格式javaapi(jdk中提供的api),类库商业的或者三方优秀开源类库
Java体系
2。常用的DOS命令
常用的DOS命令3。JDK、JRE、跨平台、Java平台JDK:它是Java开发运行环境,在程序员的电脑上当然要安装JDK;
JDKJRE开发工具集(例如Javac编译工具等)JRE:JavaRuntimeEnvironment它是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE
JREJVMJavaSE标准类库JDK包含JRE包含JVM跨平台特性平台指的是操作系统(Windows,Linux,Mac)。Java程序可以在任意操作系统上运行,一次编写到处运行实现跨平台需要依赖Java的虚拟机JVM(JavaVirtualMachine)
为什么可以跨平台?因为JAVA程序运行依赖虚拟机,而针对不同操作系统有不同版本的虚拟机Java语言是跨平台的,Java虚拟机不是跨平台的Java平台JavaSE(桌面程序)标准版JavaEE(Web程序)企业版JavaME(移动设备)微型版Android,IOS兴起后就很少使用了4。Java代码的编写执行过程源文件:编写Java源文件(我们也称之为源代码文件),它的扩展名为。java;编译:然后通过编译器把源文件编译成字节码文件,字节码文件扩展名为。class;
为什么要编译?JAVA程序是由虚拟机运行的,我们所写的代码虚拟机不认识,我们要把自己写的代码翻译成虚拟机所认识的语言运行:最后使用解释器来运行字节码文件。
Java代码的编写执行过程5。注释定义:用来解释和说明程序的文字,注释是不会被执行的分类:单行注释:注释内容多行注释:注释内容文档注释:注释内容注意:对于单行和多行注释,被注释的文字,不会被JVM解释执行对于文档注释,可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档单行注释可以嵌套使用,多行注释不能嵌套使用6。关键字、标识符关键字定义:是被Java语言赋予特殊含义,具有专门用途的单词,比如之前接触的class,int,double均为Java已经预设好的特点:字母全部小写,注意String不是关键字注意事项:goto与const是Java中的保留字,即没有赋予特殊含义却仍被Java占用的单词标识符定义:就是给类,接口,方法,变量等起名字时使用的字符序列组成规则(只能包含下面的内容,不能有其它内容):英文大小写字母数字字符和注意事项:数字不能开头不可以使用关键字严格区分大小写,不限制长度起名时,尽量达到见名知意标识符中常见的命名规则(这些规定是不受语法约束的):包名:多单词组成时所有字母均小写,使用。连接,域名反写aaa。bbb。ccc类名接口名:大驼峰式AaaAaaBbbCcc变量名方法名:小驼峰式aaaaaaBbbCcc常量名:多单词组成是所有字母均大写,使用连接AAABBBCCC7。Java中的数据类型
为什么有数据类型?
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型Java中数据类型的分类基本数据类型:基本数据类型是Java语言中内置的类型,分别是整数类型、小数类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型。引用数据类型:是强大的数据类型,它是基于基本数据类型创建的。JavaSE中提供了一个超级类库,类库中包含了近万种引用数据类型。基本类型:类接口数组枚举8。Java中的常量定义:常量就是不变的数据量,在程序执行的过程中其值不可以发生改变整形常量默认是int类型
在Java中,定义长整形数据如果值超过int取值范围后面要L,否则是错误的小数常量默认是double类型
D后缀为double,F后缀为float
定义float类型的数据后面要f,否则默认是double常量分类:整数类型十进制表示方式:正常数字。如13、25等二进制表示方式:以0b(0B)开头。如0b1011、0B1001十六进制表示方式:以0x(0X)开头。数字以09及AF组成如0x23A2、0xa、0x10八进制表示方式:以0开头。如01、07、0721小数类型:如1。0、3。15、3。168等布尔类型:true、false,注意严格区分大小写字符类型:如a,A,0,家字符必须使用包裹,并且其中只能且仅能包含一个字符字符串类型:字符串String类型是一种引用类型,我们先了解作为常量类型的使用方式如我爱Java,0123,,null字符串必须使用包裹,任意长度在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的原码:8:000010008:10001000
就是二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小。反码:8:000010008:11110111
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码:8:000010008:11111000
正数的补码与其原码相同;负数的补码是在其反码的末位加1二、变量和运算符
1。变量和计算机存储单元变量是内存中装载数据的小盒子,你只能用它来存数据和取数据变量名是标识符,这说明只要是合法的标识符都可以用来做变量名。变量使用的注意事项变量定义后可以不赋值,使用时再赋值。不赋值不能使用变量使用时有作用域的限制。(局部变量和全局变量)变量不可以重复定义计算机存储单元计算机中储存和运算的最小单位:一个字节,也就是1个字节(byte)常用储存单位1B(字节)8bit(比特位)
1KB1024B
1MB1024KB
1GB1024MB
1TB1024GB
1PB1024TB
2。数据类型和常量四类八种
byte:1个字节:128~127(数据表示范围)
short:2个字节:32768~32767
int:4个字节:2147483648~2147483648
long:8个字节:263~2631
float:4个字节:3。403E38~3。403E38
double:8个字节:1。798E308~1。798E308
char:2个字节:表示一个字符,如(a,A,0,家)
boolean:1个字节:只有两个值true与false变量必须要有明确的类型,什么类型的变量装载什么类型的数据数据类型范围从小到大排序:
bytecharshortintlongfloatdouble,
布尔类型boolean不能参与类型转换
3。数据类型转换自动类型转换:表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换
自动类型转换格式:范围大的数据类型变量范围小的数据类型值;
默认转换:byte、short、charintlongfloatdouble
byte、short、char相互之间不转换,他们参与运算首先转换为int类型强制类型转换:表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换
强制类型转换格式:范围小的数据类型变量(范围小的数据类型)范围大的数据类型值;
4。运算符和优先级
算数运算符
:正号、加、连接字符串
,运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
,运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。注意事项:加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。除法当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。整数做被除数,0不能做除数,否则报错。小数做被除数,整除0结果为Infinity,对0取模结果为NaN
赋值运算符
,,,这样的赋值运算符包含了一个强制转换的操作,会将左右两边运算后的结果,强制类型转换后赋值给左边注意:赋值运算符左边必须是变量intn10;byteby20;byn;运算完毕后,by的值为byte类型30,相当于代码by(byte)(byn);
比较运算符
!结果只能是true和false字符间的比较,比较的是其ASCII值浮点数与整数比较,只要值相等,就返回true
逻辑运算符
与falsetrueFalse
或falsetrueTrue
异或trueflaseTrue
!非!trueFlase
短路与falsetrueFalse
短路或falsetrueTrue:又叫短路运算符,AB,如果A为假,不会去计算B的值,直接得到结果为false
:AB,即使A为假,也会计算B的值。:也是短路运算符,AB,如果A为真,不会去计算B的值,直接得到结果为true
:AB,即使A为真,也会计算B的值。异或:左右两边条件结果相同,结果就为false,左右两边条件结果不同,结果就为true;
三目运算符语法:布尔表达式?表达式1:表达式2当布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值
运算符优先级
优先级描述运算符
1括号()、〔〕
2正负号、
3自增自减,非、、!
4乘除,取余、、
5加减、
6移位运算、、
7大小关系、、、
8相等关系、!
9按位与
10按位异或
11按位或
12逻辑与
13逻辑或
14条件运算?:
15赋值运算、、、、、
16位赋值运算、、、、
位运算符
位运算符位运算是直接对二进制进行运算在位运算中,操作数必须是整型位异或运算符的特点:一个数据对另一个数据位异或两次,该数本身不变。任何数和自身异或,结果为0任何数和0异或,结果为本身左移一位,相当于乘以2:321232212右移一位,相当于除以2:311321311321同样的运算,位运算的效率高于算术运算三、引用数据类型、流程控制语句和数组1。引用数据类型引用数据类型的变量定义及赋值格式:数据类型变量名new数据类型();调用该类型实例的功能:变量名。方法名();Scanner类:导包:importjava。util。Scanner;创建对象实例:ScannerscnewScanner(System。in);调用方法:intisc。nextInt();用来接收控制台录入的数字Stringssc。next();用来接收控制台录入的字符串随机数类Random方法简介publicintnextInt(intmaxValue)产生〔0,maxValue)范围的随机整数,包含0,不包含maxValue;publicdoublenextDouble()产生〔0,1)范围的随机小数,包含0。0,不包含1。0。
Random使用方式:import导包:importjava。util。Random创建实例格式:Random变量名newRandom();赋值:a变量名。nextInt(maxValue);2。流程控制语句1。if2。if。。。else。。。3。if。。。elseif。。。else。。。4。while5。for6。do。。。while。。。7。switchcasedefaultbreakcase穿透性:如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式break语句作用:跳出所在的循环体使用方式无法单独使用,必须将break关键字置于switch或循环语句中运行规律不需要判断任何条件,只要遇到break变直接跳出执行后续代码。会完全跳出选择或者循环结构只能跳出最近的代码块,不能跨越多级代码块标记当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环则需要对外层循环添加标记使用方式:在外层循环外的某行前边使用,后边跟有冒号:的标识符,即定义完毕。使用时当在内层循环使用break或continue时后边紧跟之前定义的标号即可itcast:for(i1;i9;i){外层循环,itcast是标记for(j1;ji;j){内层循环if(i4){判断i的值是否大于4breakitcast;跳出外层循环}}continue语句作用:提前结束本次循环,继续进行下次循环使用方式:无法单独使用,必须将continue关键字置于循环语句中运行规律:不需要判断任何条件,只要遇到continue变直接跳出本轮循环进行下次循环return、break、continue跳出控制语句的区别break:结束当前整个循环,执行当前循环下边的语句。continue:结束本次循环,继续进行下次循环return:用于结束一个方法,返回给上层调用者,如果位于main方法内,相当于结束了程序。
return也可以用于结束循环,因为return用于结束一个方法,如果方法中有循环的话,不管return嵌套于多少层循环之内,循环都结束。
不会再执行循环后面的语句
3。数组一维数组概述:长度不可变、元素类型相同一组数据的集合,数组中的每个数据被称作元素在数组中可以存放任意类型的元素但同一个数组里存放的元素类型必须一致。数组是恒定,定长的数组的定义1格式:数据类型〔〕数组名new数据类型〔长度〕;int〔〕xnewint〔100〕;使用属性:数组名。length数组的最小索引是0,最大索引是数组。length1数组的定义2数组初始化:在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化。格式:数据类型〔〕数组名new类型〔长度〕;int〔〕arrnewint〔4〕;类型〔〕数组名new类型〔〕{元素,元素,};int〔〕arrnewint〔〕{1,2,3,4};类型〔〕数组名{元素,元素,元素,};int〔〕arr{1,2,3,4};JVM内存划分寄存器:内存和CUP之间本地方法栈:JVM调用了系统中的功能方法和数据共享:运行时期class文件进入的地方方法栈:所有的方法运行的时候进入内存堆:存储的是容器和对象数组中常见的异常数组的索引越界异常空指针异常二维数组定义格式第一种定义格式相当于定义了一个34的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组int〔〕〔〕arrnewint〔3〕〔4〕;不推荐第二种定义格式第二种方式和第一种类似,只是数组中每个元素的长度不确定,必须要new:arr〔0〕newint〔5〕;。。。int〔〕〔〕arrnewint〔3〕〔〕;第三种定义格式二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9}int〔〕〔〕arr{{1,2},{3,4,5,6},{7,8,9}};
二维数组内存比如:int〔〕〔〕arrnewint〔3〕〔2〕;外层数组长在内存开辟连续的3个大的内存空间,每一个内存空间都对应的有地址值每一个大内存空间里又开辟连续的两个小的内存空间。打印数组打印一维数组五种方法Arrays。toString(arr)for(intn:arr)System。out。println(n,);for(inti0;iarr。length;i){System。out。print(arr〔i〕,);}System。out。println(Arrays。asList(arr));Arrays。asList(arr)。stream()。forEach(sSystem。out。println(s));java8打印二维数组三种for(inti0;i四、方法1。引入
为什么要有方法:提高代码的复用性
什么是方法:完成特定功能的代码块2。语法格式访问修饰符:方法允许被访问的权限范围。(public,protected,private,无修饰符)返回类型:void、任何数据类型方法名:同变量名规则。小写;多个单词,第一个单词首字母小写,其余首字母大写。myMethod参数列表:可以省略。参数类型参数名,。。。3。方法调用可以使用对象名调用方法,静态方法是使用类名调用的方法包括在类中,调用时先创建包含方法的类的对象,然后用对象再去调用方法。创建对象:类名对象名new类名();调用:对象名。方法名();4。注意事项方法参数是基本类型,传递的是值。(包含String类型),形式参数的改变对实际参数不影响方法参数是引用类型,传递的是内存地址值。(String类型除外),形式参数的改变对实际参数有影响方法的定义只能放在类里面,不能嵌套定义。故而不能在主方法内直接定义方法方法返回值是void,方法中可以省略return方法一般在主方法的前面定义调用方法的时候,返回值是void,不能写在输出语句中5。方法重载方法的重载:在同一个类中,方法名相同,参数列表不同。与返回值类型无关。参数列表不同:参数个数不同参数类型不同参数的顺序不同(算重载,但是在开发中不用),注意:必须是不同数据类型。相同类型不存在顺序不同方法重载注意事项重载和参数变量名无关重载和返回值类型无关如voidmethod(intx)与intmethod(inty)不是方法重载,不能同时存在重载和修饰符无关重载看方法名和参数列表6。可变参数列表例:publicvoidsum(int。。。n){}参数列表中如果有两个以上的参数,可变参数一定在最后可以将数组传递给可变参数列表数组作为参数时,不能将多个值传递给数组的一个方法的形式参数列表,只能有一个可变参数列表方法名相同,一个参数是可变参数,一个参数是一维数组,这两个方法不是重载,因为一个可变参数等价于相应类型的一维数组
就可以对可变参数列表,进行相应的数组操作,比如求长度可变参数列表所在的方法,是最后被执行访问的方法重载的时候,既可以定义有可变参数的同名方法,也可以定义有确定参数个数的方法,jvm调用方法时,会优先调用有确定参数个数的方法
如需要获得更多的java学习资料可私信学习给小编即可获取哦!