java基础

java基础-简单归纳

1.java虚拟机——JVM

1.1JVM:java虚拟机,简称JVM,试运行所有java程序的假想计算机,是java程序的运行环境,是java最具吸引力的特性之一。

跨平台:用java编写的软件可以在任何的操作系统上运行,java语言的跨平台特性

2.编译

2.1编译源文件(把人认识的源码转换为jvm能够认识的字节码,*.class)。

2.2编译就是把源码翻译成机器码的过程,翻译有两种方式。

(1)解释方式:像口语翻译,读一句翻译一句,也就是机器读一行执行一行。

(2)编译方式:像书面翻译,把所有内容一次性翻译成目标代码,目标代码会对应一份文件也就是可执行文件,最后把可执行文件交给计算机执行。如C语言

(3)对于java语言的程序,它包含了以上两种方式,把源码转换为字节码时为编译方式;把字节码交给jvm执行的过程是解释方式。

​ 后期的高版本的jvm,在执行字节码的过程中,为了加快执行的速度,会把代码中一部分(执行频率高)在内存中进行编。

​ 编译文件用到的命令是javac。

2.3执行字节码,也就是执行java程序的过程。首先把字节码加载到内存,然后进行初始化(为各种变量和常量及方法)分配内存空间,找到程序的入口(main()方法),调用入口方法开始执行,在整个执行过程中,依据程序使用的空间,不断地分配内存给程序使用,同时也定期或不定期进行垃圾回收(释放掉不再使用的内存,这些内存可以重复使用)。

3.java语言基本特征

3.1面向对象编程方式。以前的语言(例如C语言)采用面向过程的方式,面向过程的方式不适应于大型项目的开发,在这种情况下程序会非常复杂,难以维护。面向对象可以自定义类型,他可以很好的描述客观事物,更接近于人类的自然思维方式。

3.2跨平台运行。这是java一直追求的目标,也是java语言不同其他语言之处。同一份字节码可以在不同的操作系统平台上执行,原因在于java给不同的操作系统打造了不同的JVM。java 的口号,一次编写,四处运行。

4.java的关键内容

在这里插入图片描述
4.1注释

==//==单行注释,只能注释一行

==/*==a

d ==*/==多行注释,一次可以注释多行

/**

*文档 文档注释,属于多行注释,区别在于多一个 *,写在方法前

*文档注释的内容可以被java doc工具生成为API文档的一个部分, 所以文档注释一般出现在类的前面,出现在方法前面。文档注释有一些可用的关键字,比如作者,版本,日期等。

*/

// 以上注释可以用在类文件任何地方

4.2关键字

是指在程序中,java已经定义好的单词,具有特殊含义,用户不能更改,也不能创建。不同的关键字在程序中的作用是不一样的,比如class表示一个类,interface表示一个接口,null表示空值等。java现在一共有五十三个关键字,其中有两个是保留关键字(当前没有任何意义,可能以后会启用,goto,const)。java的所有关键字都是小写。关键字区分大小写。所有关键字都需要学习,在后期学习中逐渐积累。

4.3标识符

是指在程序中,我们自己定义的内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。它与关键字的区别在于一个不能变,一个可变。标识符也区分大小写。

命名规则

硬性要求

标识符可以包含英文字母26个(区分大小)、0-9数字、¥(美元符号)和_(下划线)。标识符不能以数字开头。标识符不能是关键字。

软性要求

类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。

方法名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。

变量名规范:全部小写。

标识符的命名最好具有含义,所以尽量用简单的单词。

4.4常量

表示一份数据,其值不能改变,java是提供一个关键字final,用final修饰一份变量,该变量就成了常量。

出现在代码中的一些写死的数据比如12,3.2,true等也可以理解为常量,有些书本中把它们称为直接量。

出现在代码中的直接量,分别属于什么数据类型,一定要区分清楚。0后面4.6

4.5变量

常量是固定不变的数据,那么在程序中可以变化的量称为变量。

​ 变量:计算机要进行运算必须能够保持住参加运算的数据,首先数据要进入内存存放在内存中,为了方便找到并使用这些数据,那么必须要对它进行标识,这种标识符所表示的数据就称为变量。变量表示的数据可以在程序执行过程中进行改变,变量一旦改变就使用改变后的值。

变量的使用:1.变量的声明,指明变量的名称及所属的数据类型。基本语法:数据类型 变量名。

​ 2.变量的赋值,把一份数据指定给某个变量去表示,赋值可以改变变量的值。基本语法: 变量名 = 值

规范:java语言是“强类型的语言”,它要求变量必须具有明确的数据类型,主要因为在编译期需要给变量精确的分配内存,也需要确定表达式的精确的结果类型等。

4.6数据类型

就是对程序中所使用数据的分类,数据就是用来表示信息的。作为信息的描述来说,不同种类的信息表达方式是不同的。

数据类型有八个:四个是整数,两个是小数,其它的是字符和布尔。

引用类型三个:分别是类,数组和接口。

java是面向对象的,原本没有基本数据类型,只是代码中有很多数据用基本类型来表示更加简单直接,所以得以保留。但是,所有基本类型的数据都可以用它对应的引用类型(包装类型,java中的八个基本类型有八个对应的包装类型,它们之间可以方便地进行互相转换,这个转换操作表示为“装箱”和“拆箱“。
在这里插入图片描述
在这里插入图片描述

掌握基本类型的要点在于,各类型占用的字节数,字节数越多表示的范围越大,在执行数据转换过程中,字节数越多就越可能成为转换的目标类型;

各类型数据的表示范围,了解它有利于给不同的数据声明为不同类型的合适的变量。

所有的整数类型都是精确的数字,所有的浮点型都是非精确的。如果计算结果需要精确,必须用整形。

技巧:类型的表示范围不需要死记,因为在包装类型中就包含有各种类型的表示范围。

==int i = 100;==整数的直接量的类型就是int

short s = 100; 这里执行了自动类型转换,在赋值前把int转换为short

==long l = 100;==也执行了自动类型转换,而且不会损失数据(数据溢出);

==long l1 = 4564564546456445L;==不加L为什么不能表示,因为该数超出了int的表示范围,需要在后面加L明确表示它是Long类型;

==float f = 2.5;==不加F为什么会出错,小数的直接量属于double类型,所以需要在后面加上F明确表示是Float类型;

char c = ‘*’;

int h = c;//为什么可以这样传,字符类型内容表示为一份两个字节的整数,这种赋值没有我问题

5.数据类型转换

5.1自动类型转换

把表示范围小的数据转换为表示范围大的数据,java采用的是自动类型转换,这种情况不需要在表达式中明确的指出结果类型。

比如:int i;

​ short s = 100;

​ i = s;

如何判断一个表达式计算结果的数据类型?

​ 结果类型 = 表达式中表示范围最大的类型,比如表达式中最大类型是long,结果就是long,最大类型是double,结果就是double。

​ 八大类型从小至大的排列关系:

​ byte short int long float double

​ char

5.2强制类型转换

如果把表示范围大的类型数据转换Wie表示范围小的类型的数据,必须进行强制类型转换。强制类型转换的语法:目标类型变量 = (目的类型)源类型变量

比如:long l= 10;int i = 5; i =(int)l;如果是表达式,目标类型变量 =(目的类型)(表达式)

​ 注意:自动类型转换会发生溢出吗?会的,而且编译期不报错。

​ 强制类型转换会发生溢出吗?会的,但是编译器会提前报错。

6.运算符

++ – 可以出现在变量的前面或后面,如果计算结果需要赋值给另一变量,就要注意它的运算顺序。

如果符号在前,则先对变量运算,再赋值,否则先对赋值,再对变量运算。

7.方法

**7.1方法表示类的行为。**类的功能可以通过它具有什么方法来体现,方法名称一般用动词,方法名首字母(小驼峰)。

**7.2方法可以分成两个部分。**第一方法的声明(方法的签名),

基本语法:修饰符[static,final,native等] 返回值类型 方法名(参数列表…)

​ 修饰符又称为权限限定符,规定了方法可被访问的范围,public(公共)任何人都可以访问;private(私有)只能在类的内部访问;protected(保护)类自己访问以及子类可以访问。

​ 返回值类型:规定了方法执行完毕后的结果类型。只要是java的合法类型都可以是方法的返回值类型。如果方法没有返回值,返回值不能省略只能使用void关键字来表示当前方法没有返回值。

​ 参数列表,规定了方法可以接受的参数的类型和个数;方法也可以没有参数。

							第二是方法体 { 方法体,一般是一段程序 },如果方法有返回值,必须使用==return 返回值==进行返回。如果方法没有返回值,方法中可以没有return,如果有return,方法执行到return就会终止。

7.3方法的调用:

​ 调用的形式:无返回值的方法直接调用方法名调用,有返回值的方法可以用变量接收返回值(也可能存在类型转换的问题)。

​ 在System.out.print()方法的参数中,不能使用无返回值的方法,如System.out.println(sum1());

7.4方法参数的传递

​ 方法参数的传递方式是传值不是传址。
在这里插入图片描述
7.5方法的重载

​ 在一个类中,同名的方法可以有多个,但是参数的个数,类型,顺序不相同,符合这种情况的方法就称为方法的重载。

8.流程控制语句

8.1java程序的执行流程只有三种

​ a.顺序执行,按照代码的先后顺序逐条执行。

​ b.分支执行,依据指定的条件,去执行相应的某块代码。

​ c.循环执行,依据循环条件是否成立,反复的执行某块代码。

**注意:**53个关键字中有goto语句,它作为保留关键字,没有具体含义。C语言中goto语句可以让代码任意的跳转执行,但是可能会造成流程的混乱。

条件选择语句

if(条件){ } 单分支判断语句,满足条件执行,不满足就不执行。条件可以是逻辑表达式(只使用逻辑运算符),条件表达式(使用条件运算符),也可以是boolean类型的常量或变量。

if( ){ }else{ } 双分支选择语句,满足条件执行前一块的代码,不满足执行后一块代码。

if( ){ }else if(){ }…else{ } 多分支选择语句,一个语句中可以有多个条件,只要前面的条件符合后面的条件将不再判断和执行。利用双支的选择语句也可以完成多分支的任务。如,if(){}else{ if(){}else{if(){}else{}}},但是这种写法属于嵌套的写法,代码可读性变差。

==switch()==语句, 等值条件判断的多分支选择语句。switch的执行效率高于if else if else。

循环语句

​ 任何循环语句在使用时都要注意三个要素,第一循环变量(可以是任何类型),第二循环终止条件(如果条件满足则执行,否则就退出),第三修改循环变量(当一次循环走完,应当去修改循环变量)。

for循环

​ 按序循环,循环变量按照递增或递减的顺序进行变化,适合于被处理的数据具有确定的顺序的情况,比如数组的遍历。

​ for循环的三个要素可以出现在不同的位置,但要注意区别,一般没有特殊要求,要按正常的写法写。

while循环

​ 又称为当循环,就是当条件满足就执行, 否则不执行。

​ 循环变量在循环结束后可以继续使用。

​ 如果不能确定循环次数,就可以考虑使用while。

do while()循环

​ 以称为直到循环,循环语句至少会执行一次。这种循环用的比较少,除非循环语句至少要执行一次。

continue和break

​ 这两个关键字都可以用在循环体内,程序执行到continue,那么循环体内后面的语句不再执行,转而执行下一次循环。

​ 程序执行到break,循环体内后面的语句不再执行,马上终止循环。

9.数组

1.数组是最常用的数据类型之一,所有的高级语言都支持这种数据类型。

2.在java中,数组属于引用类型,它的处理机理和使用方式与基本类型的数据有较大的不同。

3.在Java中,对数组有着严格的规范,首先,数组的元素必须是同一类型,其次数组一旦创建,它的长度不可变的(固定长度),数组在内存中按序连续的存放。

4.数组可以存放多个元素,因此可以把数组当作一个容器来看待。集合类型中有List集合,它的内部其实就是一个数组。

5.画一下数组的内存图:检索数据效率最高
在这里插入图片描述

9.1数组的使用

  • ​ 数组变量的声明,语法:数据类型[] 数组变量。

  • ​ 数组的创建,就是在内存中为数组开辟一块区域。Java中有三种方式

例:int [] ar1;声明数组变量,此时数组未创建,并不占用内存

​ ==ar1=new int[10];==在内存中分配了又是个元素的空间给数组,此时我们认为数组被初始化

	ar2 = new int[]{1,2,3,4,5};创建时即赋初值,数组的长度就是元素的个数

​ int[] ar3 = {2,3,6,4,5};直接指定数组元素的初值,数组的长度就是所有元素的个数

​ for(int j=0;j<ar1.length;j++) {

​ sysout.out.println(ar1[j]);数组元素的引用

}

  • 数组元素的复制,用数组变量[索引] = 值;的语法。

  • 引用数组元素,数组变量[索引] 就表示对应元素的值。

  • 数组的遍历,就是按照索引的顺序,逐一取同数组元素并使用。因为数组有确定的长度,适合于使用for循环。

  • 数组可以作为方法的参数,传参时传递的是数组的地址,因此方法内所使用的数组与方法外创建的数组是同一份数据,那么在方法内对数组的修改,也就是对方法外的数组的修改。在java中,方法的参数是引用类型,

  • 数组作为返回值。

  • 数组的常见异常

    越界异常:代码中使用了数组范围外的索引值

    空指针异常:

  • 数组的缺点,它的长度在创建后就不能改变,它具有固定的长度。

] = 值;的语法。

  • 引用数组元素,数组变量[索引] 就表示对应元素的值。

  • 数组的遍历,就是按照索引的顺序,逐一取同数组元素并使用。因为数组有确定的长度,适合于使用for循环。

  • 数组可以作为方法的参数,传参时传递的是数组的地址,因此方法内所使用的数组与方法外创建的数组是同一份数据,那么在方法内对数组的修改,也就是对方法外的数组的修改。在java中,方法的参数是引用类型,

  • 数组作为返回值。

  • 数组的常见异常

    越界异常:代码中使用了数组范围外的索引值

    空指针异常:

  • 数组的缺点,它的长度在创建后就不能改变,它具有固定的长度。

    • 在实际编辑过程中,经常会遇到把一组数据存放到数组中进行管理,可是设计时不知道运行时该数组中会存放多少个元素,因此无法确定数组的长度。java中提供一种称为可变的数组类型,它就是ArrayList类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值