首页 > 代码库 > java基础

java基础

计算机语言的发展:

按照由难到易的顺序,计算机语言由最初的机器语言发展出了汇编语言,高级语言,三大类。

  • 机器语言:机器语言是指一台计算机全部的指令集合电子计算机所使用的是由"0"和"1"组成的二进制数, 二进制是计算机语言的基础。 由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序, 造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
  • 汇编语言:为了减轻使用机器语言编程的痛苦,用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串, 这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将 这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
  • 高级语言:在没有程序语言以前, 计算机科学家们写程序都是以开关电闸(即用二进制)来实现(表示)的,后来有了汇编,在后来有了C,直到今天有了C++、JAVA、 VB、Delphi等等各种各样的编程语言层出不穷。
  • 可就在计算机语言不断的演化过程中,每一种语言都有一些共性是不变的.。 这些共性可概括为以下三点:其一是:内存电位的设置.(置1或0)其二是:条件判断(if,else)该功能可通过逻辑门实现. 其三是:循环,也就是程序下一条指令地址可设置。
  • 软件:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
  • java语言:Java是由Sun最初设计用于嵌入程序的可移植性“小C++”
    优点:二进制码可移植到其他平台。程序可以在网页中运行。 内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。 缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器) 很大的提高了Java的速度,不过速度永远比不过机器码方案。

b/s与c/s的区别:

  • C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统, 如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。 B/S 是Brower/Server的缩写, 客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、 Informix或 SQL Server等数据库。用户界面完全通过WWW浏览器实现,主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

初识java

  • java是一种高级的面向对象的程序设计语言。使用java语言编写的程序是跨平台的,java程序可以在任何计算机,操作系统和支持 java的硬件设备上运行。java语言编写的程序既是编译型的又是解释型的,>程序代码经过编译之后,形成字节码的中间语言, java虚拟机将对字节码进行解释和运行,编译只进行一次,而编译在每次运行程序时都会进行。编译后的字节码采用一种 针对jvm优化过的机器码形式保存,虚拟机讲字节码解释为机器码。java语言程序代码的编译和运行过程如图所示。

技术分享


java的三个版本

  • java SE:(Java2 Standard Edition)是java的标准版,主要应用于桌面应用程序的开发,同时也是java的基础版, 包含java语言基础,JDBC(java数据库连接性)操作、I/O(输入/输出),网络通信,多线程技术。
  • java EE:(Java2 Platform,EnterpriseEdition)是java的企业版,主要应用于开发企业级分布式的网络程序,如电子商务 网站和ERP(企业资源规划)系统,其核心是EJB(企业java组件模型)。
  • java ME:是java微缩版(Java2 Micro Edition)主要应用于嵌入式系统开发,如掌上电脑,手机等移动通信电子设备

jdk和jre:

  • JDK: (Java Development ToolKit) java开发工具包。JDK是整个java的核心!jdk的安装目录说明:bin目录 :存放编译运行的可执行性文件lib目录:存放java类库文件demo目录:存放演示程序jre目录存放java运行环境文件。 java编译和调试等工具和 java基础的类库(Java API===>java应用程序接口,jdk程序源代码)!
  • JRE它是java运行环境 (Java Runtime Envirnment),所有的java程序都要在jre环境下才能运行!包含了JVM,JAVA的核心类库!

java语言的特性:

  • 面向对象:面向对象是java的语言的基础,也是重要的特性,JAVA语言最外部的数据类型是对象,所有的元素都要通过类和对 象来访问。提倡万物皆对象,语法中不能在类外面定义单独的数据和函数。
  • 分布型:java可以凭借URL(统一资源定位符) 对象访问网络对象,访问方式与访问本地系统相同。
  • 可移植性:java程序具有与体系结构无关的特性,可以方便地移植到网络上的不同计算机。 同时,java的类库也实现了针对不同平台的接口,使这些类库可以移植。
  • 解释型(跨平台):任何移植了java解释器的设备都可以使用 java字节码进行解释执行。
  • 安全性:java删除了类似C语言中指针和内存释放等语法,有效避免了非法操作内存
  • 多线程:多线程机制可以使程序在同一时间并行执行多向任务,而且相应的同步机制可以保证不同线程能够正确的共享数据。

java虚拟机与跨平台原理:

    • JVM:(Java virtial Mechinal)java虚拟机是可运行java字节码的计算机系统,在它上面可以执行java字节码程序,它附着在具体操作系统上, 本身具有一套虚拟机指令。通常是在软件上实现。java实现跨平台性,字节码具有通用的形式,只有通过java虚拟机处理后 才可以转换成具体计算机可执行的程序,,属于jre的一部分!主要工作:解释自己的字节码文件, 并且映射到本地的CPU的指令继承的OS系统调用! java是跨平台的,就是基于jvm的!使用jvm的映射规则,让其变得与操作系统无关了!
    • 一句话概括,jvm既是编译型的又是解释型的

    • 使用记事本开发分三步走,编写,编译,运行

开发环境搭建与配置:

      1. 方法一:直接在系统变量path变量下原变量前添加jdk的安装的路径以英文分号相隔 在path变量下新添加jdk和jre的安装路径bin级目录,如下图
      2. 在系统变量里添加JAVA_HOME其值为jdk的安装路径(%JAVA_HOME%代表jdk的路径, 是JAVA_HOME的引用形式),添加classpath(表示类的路径)其值为(.;%JAVA_HOME%\lib)添加PATH变量,其值为(%JAVA_HOME%\bin)
      3. 1.在path变量原变量值前添加jdk的安装路径同方法一,2.添加JAVA_HOME其值同方法二。配置完毕通过doc窗口输入cmd命令回车,输入javac回车进行测试。

用记事本编写程序

书写格式如下:

 

      1. public class Helloworld{
            public static void main(String[]args){
               System.out.println("Helloworld");
         }
      2. }
      3. public class Helloworld是主体框架,class的含义是类,Helloworld是类名。
        main(String[]args) 方法是java程序执行的入口,(不止一种方法);public static void是关键字。System.out.println是java的输出语句

      • 代码规范组织与风格关键词和操作符之间加适当的空格。
      • 相对独立的程序块与块之间加空行
      • 划分出的新行要进行适应的缩进,使排版整齐,语句可读。
      • 长表达式要在低优先级操作符处划分新行, 操作符放在新行之首。
      • 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。
      • .若函数或过程中的参数较长,则要进行适当的划分。
      • 不允许把多个短语句写在一行中,即一行只写一条语句。
      • 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。
      • 较长的语句、表达式等要分成多行书写
      • 代码中的所有标点符号都是英文字符,文件名必须和类名一致,首字母大写,java是区分大小写的

println输出信息的几种用法

println print
输出一行信息并换行 输出一行信息不换行

转义字符的使用

转义字符 含义
\ddd 1~3位八进制数据所表示的字符,如\456
\dxxx 4位十六进制所表示的字符,如\0052
\‘ 单引号字符
\\ 反斜杠字符
\t 缩进符
\r 回车
\n 换行
\b 退格
\f 换页

API文档:

    • API(Application Programming Interface),即应用程序编程接口,是java程序开发必不可少的编程词典,主要包括类的继承
      结构,成员变量和成员方法,构造方法,静态成员的详细说明和描述信息。

反编译原理:将字节码文件转换成源文件

 

注释规范

    • 通过在程序代码中添加注释可提高程序的可读性,注释包含了程序的信息,可以帮助程序员更好的阅读和理解 程序。在任意位置都可添加注释。三种注释方法:1.单行注释(代码//,顾名思义注释在单行内有效)2. 多行注释(代码“/**/”/*与*/之间的内容都是注释,在多行注释中可嵌套单行注释)文档注释(“/***/”/** 与*/之间的内容都是注释,)软件编码规范中提到可读性第一,效率第二,注释要占代码的20%~~50%。

myeclipse的使用:

    • myeclipse的使用分为四步走:
      (1)新建java项目(2)创建java类(3)创建package包(4)完成 (5)输入代码(6)运行:run as···java application

程序调试

    • 程序调试:满足暂停程序,观察变量和逐条执行语句等功能的工具和方法
      1.F5是单步跳入,进入本行代码内部执行,如进入方法内部
      2.F6是单步跳过,禁止性本行代码,执行完跳到下一行代码。

JAVA主类结构

JAVA程序的基本组成单元是类,类体中又包括属性与方法两部分。

  • 包声明:一个JAVA程序由若干个类组成,语句package为声明该类所在的包,package为包的关键字,
    类包包含了一些类和接口。类包不仅可以解决类名冲突问题,还可以帮助开发人员管理庞大的程序组件。
  1. package包名:在类中指定包名时需要将package表达式放在第一行,它必须是非注释代码第一行
  2. 当使用package关键字为类指定包之后,包名将会成为类名中的一部分,预示着这个类必须指定全名。
  3. java包的命名规则全部使用小写字母。
  4. 为了避免包名冲突,采用Internet域名的反序(域名倒置)
  • 导入包:
  1. 使用import关键字导入包。语法:import com.y.*;(指定包com.y包中的所有类可以在程序中使用
  2. 包import com.y后面加*意为可以在这个包中使用所有的类。(*所有的意思,在html中有体现
  3. 将源文件与类文件放在一起不易于管理,在编译时使用-d参数设置编译后类文件的存放位置。
  • 使用import导入静态成员:语法,import static

  • 声明成员变量和局部变量:

    通常将类的属性称之为类的全局变量(成员变量)将方法中的属性称之为局部变量
    全局变量声明在类体中(在整个类体中都有效),局部变量声明在方法体中(只在方法体中有效)。

代码示例:
public class Val{
  static int time=3; nbsp//定义成员变量time
    public static void main(String[]args){ //主方法
       int time=4;    //定义局部变量
   System.out.println("time的值为"+time);    将time的值输出
   }
}


  • 编写主方法:

    main方法是类体中的主方法。public是面方法的权限修饰符,static是静态修饰符,
    void是main方法的返回值修饰符main方法必须声明为public static void main(String[args])是一个字符串类型
    它是main方法的参数,main方法是程序开始执行的位置(程序的入口)class是类,args是参数名String是参数类型

导入API类库

在Java语言中可以通过import关键字导入帮助相关的类。可以通过jdk的API文档来查看这些类,
其中主要包括类的继承结构,类的应用成员变量表,构造方法表等。


变量与常量:在程序执行过程中其值不能改变的值称为常量,其值可以改变的量为变量

  1. 在java中,标识符用来为程序中的常量,变量,方法,类,接口和包命名。
  2. 标识符的命名规则
  3. 常量命名全部使用大写字母
  4. 标识符由字母,数字,下划线,美元符号,人民币符号组成。
  5. 不能使用关键字和保留字作为变量名,首字母必须是字母或者下划线_ 美元符号$ 人民币符号¥
  6. 不能以数字开头 变量名对大小写敏感 A a
  7. 标识符的首字母以字母,下划线,或美元符号,人民币符号开头,不能以数字开头。
  8. 标识符的命名不能与关键字,布尔值(true,false)和null相同
  9. 标识符区分大小写,没有长度限制,坚持见名知意的原则。

注:变量名不能重复,必须是有效的标识符,应该选择有意义的单词

  • 见名知意原则与驼峰命名法
  1. 见名知意原则:指在使用标识符时,要使用能准确反映被定义含义或作用的字符。
  2. 驼峰命名法就是当使用标识符命名时,如果由一个或多个单词连接在一起,第一个单词以
    小写字母开始,第二个单词及后续每一个单词都采用大写字母,看上去像驼峰,故得名。
  3. 帕斯卡命名法:类名首字母大写,有意义的单词首字母也大写。

  • java中常用的关键字

>

abstract class final int public this
assert continue finally interface return throw
bolean default float long short throws
break do for native static transient
byte double if strictfp new try
case else implements package super void
catch enum import private switch volatile
char extends instanceof protected synchronized while

保留字:goto及const

  • 使用注释对代码进行解释说明
  1. //单行注释,//之后的内容都被认为是注释
  2. /*多行注释*/,/*与*/之间的内容都是注释,可以嵌套单行注释
  3. /**文档注释*/,/**与*/之间的内容都是注释,包含一些描述性的文本及诺干个文档注释标签
    文档注释一般以@为前缀。
  • java中常用的文档注释标签
标签 含义 标签 含义
@author 作者名 @version 版本标示
@parameter 参数及其意义 @since 最早使用该方法,类,接口的jdk版本
@return 返回值 @throws 异常类及抛出条件

  • 数据类型

java是强类型语言,在定义变量前需要声明数据类型。在java中主要分为基本数据类型和引用数据类型。

  1. 基本数据类型:数值型(包括整数类型,浮点类型)字符型(char),布尔型(boolem)。
  2. java中的引用数据类型,主要包含 类,接口和数组等。
  • java中的基本数据类型和取值范围
基本类型 大小 示例 取值范围
boolem 1字节8位 true true,false
byte 1字节8位有符号整数 -12 -128~~+127
short 2字节16位有符号整数 100 -32768~~+32767
int 4字节32位有符号整数 12 -2147483648~~+2147483647
long 8字节64位有符号整数 10000 -2的63次方~~+2的63次方-1
char 2字节16位Unicode字符 ‘a‘ 0~~65535
float 4字节32位浮点数 3.4f 1.4E-45~~3.4E+38,-1.4E-45~~-3.4E+38
double 8字节64位浮点数 -2.4e3D 4.9E-324~~1.7E+308,-4.9E-324~~-1.7E+308

 

    注意:
  1. 整数类型:用来存储整数数值,有三种表示方式分别是十进制(不能以0作为开头0除外),八进制(必须以0开头)和十六进制(必须以0X或0x开头)
  2. 整数类型分为长整数类型,短整数类型
  3. char类型占两字节,采用Unicode码。
  4. byte类型占一字节,是整数类型的一种。
  5. 所有的数据类型 长度固定,不会因为硬件,软件不同而发生变化
  6. String类型不是基本数据类型,而是引用数据类型,它是java提供的一个类。

  • 常量:

java中的常量

>

  • 变量

  1. 语法规则:【访问修饰符】变量类型 变量名【=初始值】;
  2. 变量类型在数据类型中选择,变量名是定义的名称变量,遵循标识符命名规则。
  3. 初始值是可选项。
  4. 将常量值赋给变量即可使用,变量必须先定义后使用。
  • 数据类型转换
    1. 算术运算时:低级别自动转换成高级别.转换关系如下图

技术分享

    1. 赋值运算时:
    2. 自动类型转换:将低级别的类型赋值给高级别类型时,将自动进行类型转换。

 

      强制类型转换:将高级别类型赋值给低级别时,必须进行强制类型转换,使用一对小括号进行

 

      例如:将int值转换成byte型,int num=110; byte by=(byte)num;

 

    注:将浮点类型转换成整数型时会造成数据精度丢失。
  • Scanner的使用
  1. 导入Scanner类:import java.util.*(*代表所有的)
  2. 创建Scanner对象:Scanner input=new Scanner(System in)
  3. 获得用户键盘输入的方法
名称 举例 说明
整数类型 789//十进制整型常量 超过int类型取值范围的,必须在整数 加大写L或小写的l,才能作为long型处理。为了防止小写l与“1”混淆,通常采用大写L
浮点型常量 浮点型3.4f //float(32bit) -45.9F //float(32bit) -2.4e3D//double(64bit) 3.4 //double(64bit) java的浮点数类型默认是double,float需要在数字后面加F或f
布尔常量 true //真 false //假 布尔常量只能取true和false
字符常量 普通字符常量‘A‘‘a‘‘8‘ 转义字符‘\n‘换行‘\t‘表示按TAB键‘\b‘表示按Backspace键特殊字符‘\\‘表示反斜杠‘\‘‘表示单引号‘\‘‘‘表示双引号 字符常量占两字节内存空间, 转义字符都是不可显示字符,特殊字符表示是再加一个\即可
字符串常量 "北大青鸟","A" 要注意字符与字符串的区别 ,字符用单引号,字符串用双引号
null常量 null null常量只有null一个值,可以吧null常量赋给任意类型的引用类型变量
符号常量 final double PI=3.14; double area=PI*r*r;计算面积。double length=PI*r*2; 计算周长/td> final含义是最终的不可 更改的,属于修饰符 ,修饰double值,要想改变PI的值只有修改第一行定义的值
方法 说明
String next() 获得一个字符串
int nextInt() 获得一个整形数值
double nextDouble() 获得一个双精度类型数值
boolean hasNext() 判断是否有数据输入,如果有则返回true,否则返回false

 

  • Java中的运算符

<>

  • 算数运算符
运算符 含义 范例 结果
+ 加法运算符 5+3 8
- 减法运算符 5—2 3
* 乘法运算符 5*3 15
/ 除法运算符 5/3 1
% 取模(取余)运算符 5%3 2
++ 自增运算符 i=2;j=i++ i=3;j=2
—— 自减运算符 i=2;j=i—— i=1;j=2

注意

  • 除法运算符,操作数均是整数,结果也是整数,舍弃小数部分
  • 如果有一个是浮点数类型,结果也是浮点数,保留小数部分。
  • 取余运算符,如果操作数均是整数,结果也是整数;有一个浮点数结果也是浮点数,保留小数部分
  • 自增运算符有i++和++i两种使用方式,相同点都相当于i++;不同点事i++先进行表达式再加1,而++i是先加1再进行表达式运算。
  • 关系运算符
运算符 含义 范例 结果
== 等于 5==6 false
!= 不等于 5!=6 true
> 大于 5>6 false
< 小于 5< true
>= 大于等于 5>=6 false
<= 小于等于 5<=6 true
  • 逻辑运算符:=用于给变量指定变量值,并可以和算数运算符组合,组成符合赋值运算符
    包括:+=,—=,*=,/=,%=
运算符 含义 运算规则
& 逻辑与 两个操作数都是true结果才为true
| 逻辑或 两个操作数一个是true结果为true
︿ 逻辑异或 两个操作数相同结果为false
逻辑反(逻辑非) 操作数为true,结果为false;操作数为false,结果为true
&& 短路与 运算规则同&但短路
|| 短路或 运算规则同|但短路
  1. 操作数类型只能是 布尔型,操作结果也是布尔值
  2. 优先级别:(!)>(&)>(︿)>(|)>(&&)>(||)。
  3. &与&&的区别:当&&的左侧值为false时,则将不会计算右侧的表达式
    即左false则false;&无论任何情况,两侧的表达式都会参与计算。
  4. ||与|的区别同&与&&。
  • 位运算符
运算符 含义 运算规则
& 按位与 两个操作数都是1结果才为1
| 按位或 两个操作数一个是1结果为1
︿ 按位异或 两个操作数相同结果为0,两个操作数不同结果为1
按位非(取反) 操作数为1,结果为0;操作数为0,结果为1
<< 左移 右侧空位补0
>> 右移 左侧空位补最高位,即符号位
>>> 无符号右移 左侧空位补0
    提示
  1. 操作数以二进制位为单位进行运算
  2. 位运算符的数值类型都是整数型,结果也是整数型,包括int和long
  3. 如果操作数是char,byte,short,位运算前其值会自动晋升为int,结果为int
  • 条件运算符
  1. 条件运算符:是java中唯一需要3个操作数的运算符,所以又称三目运算符或三元运算符
  2. 条件运算符的语法规则:条件?表达式1:表达式2
  3. 在语法中,首先对条件进行判断,如果为true结果返回表达式1的值
  4. 如果结果为false,返回表达式2的值
  • 优先级和结合性

3

优先级 运算符 结合性
1 ();[] 从左向右
2 !,~,++,—— 从右向左
  */% 从左向右
4 +,— 从左向右
5 <<,>>,>>> 从左向右
6 <,<=,>,>=,instanceof 从左向右
7 ==,!= 从左向右
8 & 从左向右
9 ︿(按位异或) 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =,+=,—=, *=,/=,%=,&=,|=,︿=,~=,<<=,>>=,>>>= 从右向左
    提示:
  1. 优先级最低的是赋值运算符,其次是条件运算符
  2. 单目运算符包括!,~,++,——,优先级最高
  3. 可以通过()控制表达式的运算顺序,()的优先级最高
  4. 总体而言,优先级顺序为算数运算符大于关系运算符大于逻辑运算符
  5. 结合性为从右向左的只有赋值运算符,三目运算符,单目运算符(一个操作数)

总结:

  1. 标志符的命名规则
  2. 注释的添加
  3. 数据类型
  4. 变量与常量
  5. 数据类型转换(使用赋值运算符的强制类型转换)
  6. Scanner的常用方法
  7. 演示三元运算符
    练习题
  1. 正确使用标识符命名
  2. 数据类型的交换与转换
  3. 使用变量输出个人信息与用常量求圆的面积与周长
  4. 使用算数运算符和关系运算符实现4位会员卡号求和 并实现模拟幸运抽奖
  5. 输入存入本金,求n年后本金变成?
  1. java中的标识符和使用时需要遵循的规则。
  2. java中的注释分为单行注释,多行注释和文档注释,明确几种 注释的使用场合和使用方法。
  3. Java中丰富的数据类型,7种类型的常量。
  4. Java中与常量对应的变量的作用和使用方法。
  5. Java中数据类型之间的转换,主要自动类型转换,强制类型转换。
  6. java中六大运算符,分别是赋值运算符,,算数运算符,
    关系运算符,逻辑运算符,位运算符和条件运算符。
    本章总结
  1. 程序流程包括顺序结构,选择结构和循环结构。
  2. 顺序结构是指程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。
  3. 选择结构是根据条件判断的结果来选择执行不同的代码。
    在Java中提供了if和switch语句来实现选择结构。
  4. 循环结构是指根据条件来重复的执行某段代码。
    在java中提供了while,do-while,for语句来实现循环结构
  5. 跳转语句中,break和continue语句用来实现循环结构的跳转,提供了return语句来跳出方法

数组

一)数组:数组用来存储一组相同类型数据的数据结构,数组的存储方式是一种线性的存储结构。
定义数组:数组类型[]数组名; 或者数组类型 数组名[];
此时的数组没有任何元素。 对数组进行分配内存和初始化
1)定义数组长度的语法
数据类型[]数组名=new 数据类型[数组长度];
或者:
数据类型 数组名[]=new 数据类型[数组长度];
2)数组元素的表示与赋值
定义数组时,内存分配的是连续的空间,所以数组元素在数组里顺序排列编号,该编号即元素下标 首元素的编号是0,一次递增,每次增长数是1
获得数组元素的语法:数组名 [下标值]
3)数组初始化:在定义数组的同时一并完成赋值操作。
初始化1.首先定义一个数组长度为2的数组,
数据类型 [] 数组名=new int[2]; 然后赋值
数组名[0]=值;数组名[1]=值;数组名[2]=值; 初始化2:
数组初始化的语法:数据类型[]数组名={值1,值2,值3.......,值n};
或者
数据类型[]数组名=new 数据类型[]{值1,值2,值3.......,值n};


二)遍历数组:数组和循环组合使用可以简化代码,通常使用for循环遍历数组 ,for循环通常用于循环次数固定的循环.
实现步骤:
1)创建整型数组。
2)创建Scanner对象。
3)将循环变量i作为数组下标,循环接收键盘输入,并为数组元素赋值


三)增强for循环的语法:for(元素类型 变量名:要循环的数组或集合名){.....}


四)二维数组及其使用
二维数组每一行和列元素都可以看成是一个一维数组 
1)二维数组:数据类型为数组元素的类型。[][]用于表明定义了一个二维数组,通过多个下标进行数据访问
实质是一维数组,它的每一个元素由一维数组组成
如:int a[][]={{0,1}{1,2}{2,3}}; 定义了一个三行两列的二维数组
2)二维数组的语法:数据类型[][]数组名; 或 数据类型 数组名[][];
3) 二维数组使用:初始化及遍历
初始化二维数组
数据类型[][]数组名=new 数据类型[][]{{元素值},{元素值},{元素值}};
或者
数据类型 数组名[][]={{元素值},{元素值},{元素值}};
五)遍历二维数组实现步骤:


1)初始化二维数组。
2)定义保存数据的变量。
3) 使用for循环遍历二维数组。


六)一维数组与二维数组的区别:一维数组可以直接可以通过length属性取到数组的长度, 二维数组直接用length取到的仅是二维数组的行数, 需要再拿到每一列的元素再次使用length属性


七)数组常见问题
1)数组下标越界,需要数组下标值是从0开始
2)正确的初始化数组格式:
数组初始化的语法:数据类型[]数组名={值1,值2,值3.......,值n};
或者
数据类型[]数组名=new 数据类型[]{值1,值2,值3.......,值n};
八) 数组常用操作
1)数组添加:添加int index=-1; 相当于找到null下标,使用break跳出循环。随后进入下一个if语句
2)数组修改:首先查找位置,然后进行修改,添加int indexNew=-1;
3)数组删除:首先找到删除的位置,删除后把后面数据依次往前推 添加int index=-1; 


八)Arrays类及其常用和方法
(一)Arrays类是jdk提供的专门用于操作数组的工具类,位于java.util包中。
(二)Arrays类常用方法:
1.比较两个数组是否相等,返回类型是布尔值方法equals(数组1,数组2);
实现步骤:
1)初始化3个一维数组
2)使用equals(数组1,数组2);
2.对数组的元素进行升序排列,返回类型void ,方法sort(数组);
实现步骤:
1)初始化二维数组
2)使用for循环遍历二维数组
3)使用sort(数组);
4)使用for循环遍历二维数组的元素并输出
3.将一个数组转换成字符串,返回类型String ,方法toString(数组);
实现步骤:
1)初始化一个一维数组
2)toString(数组);
4.将数组的所有元素都赋值为val ,返回类型 void ,方法 fill(数组,元素值);
实现步骤:
1)初始化一维数组,
2)fill(数组,元素值);
5.把数组复制成一个长度为length的新数组,返回类型与数组数据类型一致,
方法:copyOf(数组,length);
实现步骤:
1)初始化一维数组
2)使用copyOf(数组,length);定义一个长度为n的新数组
6.查询元素值值val在数组中的下标,返回类型整型,int。方法:binarySearch(数组,元素值);
实现步骤:
1)初始化一维数组
2)使用方法sort(数组);进行升序排列
3)使用binarySearch(数组,元素值);查询并输出


九)数组应用技巧:
1)使用循环输入为数组元素赋值:创建整型数组,创建Scanner对象,将元素变量i作为下标值,并赋值。
2)获得数组长度的方法:数组名点length。
3)逆序循环输出:参考代码:for(int i=数组名.length-1;i>=0;i--){ }
数组总结
1.数组是可以在内存中连续存储多个元素的结构,数组中的元素必须属于相同数据类型。
2.数组中的元素通过下标进行访问,第一个元素下标值从0开始。
3.二位数与实际是一个一维数组,它的每个元素又是一个一维数组。
4.使用arrays类提供的方法可以对数组中的元素进行操作。
5.jdk1.5提供for增强,用来实现对数组和集合中的数据进行访问

java基础