首页 > 代码库 > 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既是编译型的又是解释型的
- 使用记事本开发分三步走,编写,编译,运行
开发环境搭建与配置:
- 方法一:直接在系统变量path变量下原变量前添加jdk的安装的路径以英文分号相隔 在path变量下新添加jdk和jre的安装路径bin级目录,如下图
- 在系统变量里添加JAVA_HOME其值为jdk的安装路径(%JAVA_HOME%代表jdk的路径, 是JAVA_HOME的引用形式),添加classpath(表示类的路径)其值为(.;%JAVA_HOME%\lib)添加PATH变量,其值为(%JAVA_HOME%\bin)
- 1.在path变量原变量值前添加jdk的安装路径同方法一,2.添加JAVA_HOME其值同方法二。配置完毕通过doc窗口输入cmd命令回车,输入javac回车进行测试。
用记事本编写程序
书写格式如下:
- public class Helloworld{
public static void main(String[]args){
System.out.println("Helloworld");
}
}
- public class Helloworld是主体框架,class的含义是类,Helloworld是类名。
main(String[]args) 方法是java程序执行的入口,(不止一种方法);public static void是关键字。System.out.println是java的输出语句
- 代码规范组织与风格关键词和操作符之间加适当的空格。
- 相对独立的程序块与块之间加空行
- 划分出的新行要进行适应的缩进,使排版整齐,语句可读。
- 长表达式要在低优先级操作符处划分新行, 操作符放在新行之首。
- 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。
- .若函数或过程中的参数较长,则要进行适当的划分。
- 不允许把多个短语句写在一行中,即一行只写一条语句。
- 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。
- 较长的语句、表达式等要分成多行书写
- 代码中的所有标点符号都是英文字符,文件名必须和类名一致,首字母大写,java是区分大小写的
println输出信息的几种用法
println | |
输出一行信息并换行 | 输出一行信息不换行 |
转义字符的使用
转义字符 | 含义 |
\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为包的关键字,
类包包含了一些类和接口。类包不仅可以解决类名冲突问题,还可以帮助开发人员管理庞大的程序组件。
- package包名:在类中指定包名时需要将package表达式放在第一行,它必须是非注释代码第一行
- 当使用package关键字为类指定包之后,包名将会成为类名中的一部分,预示着这个类必须指定全名。
- java包的命名规则全部使用小写字母。
- 为了避免包名冲突,采用Internet域名的反序(域名倒置)
- 导入包:
- 使用import关键字导入包。语法:import com.y.*;(指定包com.y包中的所有类可以在程序中使用
- 包import com.y后面加*意为可以在这个包中使用所有的类。(*所有的意思,在html中有体现
- 将源文件与类文件放在一起不易于管理,在编译时使用-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文档来查看这些类,
其中主要包括类的继承结构,类的应用成员变量表,构造方法表等。
变量与常量:在程序执行过程中其值不能改变的值称为常量,其值可以改变的量为变量
- 在java中,标识符用来为程序中的常量,变量,方法,类,接口和包命名。
- 标识符的命名规则
- 常量命名全部使用大写字母
- 标识符由字母,数字,下划线,美元符号,人民币符号组成。
- 不能使用关键字和保留字作为变量名,首字母必须是字母或者下划线_ 美元符号$ 人民币符号¥
- 不能以数字开头 变量名对大小写敏感 A a
- 标识符的首字母以字母,下划线,或美元符号,人民币符号开头,不能以数字开头。
- 标识符的命名不能与关键字,布尔值(true,false)和null相同
- 标识符区分大小写,没有长度限制,坚持见名知意的原则。
注:变量名不能重复,必须是有效的标识符,应该选择有意义的单词
- 见名知意原则与驼峰命名法
- 见名知意原则:指在使用标识符时,要使用能准确反映被定义含义或作用的字符。
- 驼峰命名法就是当使用标识符命名时,如果由一个或多个单词连接在一起,第一个单词以
小写字母开始,第二个单词及后续每一个单词都采用大写字母,看上去像驼峰,故得名。 - 帕斯卡命名法:类名首字母大写,有意义的单词首字母也大写。
-
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
- 使用注释对代码进行解释说明
- //单行注释,//之后的内容都被认为是注释
- /*多行注释*/,/*与*/之间的内容都是注释,可以嵌套单行注释
- /**文档注释*/,/**与*/之间的内容都是注释,包含一些描述性的文本及诺干个文档注释标签
文档注释一般以@为前缀。
- java中常用的文档注释标签
标签 | 含义 | 标签 | 含义 |
@author | 作者名 | @version | 版本标示 |
@parameter | 参数及其意义 | @since | 最早使用该方法,类,接口的jdk版本 |
@return | 返回值 | @throws | 异常类及抛出条件 |
-
数据类型
java是强类型语言,在定义变量前需要声明数据类型。在java中主要分为基本数据类型和引用数据类型。
- 基本数据类型:数值型(包括整数类型,浮点类型)字符型(char),布尔型(boolem)。
- 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 |
- 注意:
- 整数类型:用来存储整数数值,有三种表示方式分别是十进制(不能以0作为开头0除外),八进制(必须以0开头)和十六进制(必须以0X或0x开头) 整数类型分为长整数类型,短整数类型
- char类型占两字节,采用Unicode码。
- byte类型占一字节,是整数类型的一种。
- 所有的数据类型 长度固定,不会因为硬件,软件不同而发生变化
- String类型不是基本数据类型,而是引用数据类型,它是java提供的一个类。
-
常量:
java中的常量
>
-
变量
- 语法规则:【访问修饰符】变量类型 变量名【=初始值】;
- 变量类型在数据类型中选择,变量名是定义的名称变量,遵循标识符命名规则。
- 初始值是可选项。
- 将常量值赋给变量即可使用,变量必须先定义后使用。
- 数据类型转换
- 算术运算时:低级别自动转换成高级别.转换关系如下图
- 赋值运算时: 自动类型转换:将低级别的类型赋值给高级别类型时,将自动进行类型转换。
- 强制类型转换:将高级别类型赋值给低级别时,必须进行强制类型转换,使用一对小括号进行
- 例如:将int值转换成byte型,int num=110; byte by=(byte)num;
- 注:将浮点类型转换成整数型时会造成数据精度丢失。
- Scanner的使用
- 导入Scanner类:import java.util.*(*代表所有的)
- 创建Scanner对象:Scanner input=new Scanner(System in)
- 获得用户键盘输入的方法
名称 | 举例 | 说明 |
整数类型 | 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 |
&& | 短路与 | 运算规则同&但短路 |
|| | 短路或 | 运算规则同|但短路 |
- 操作数类型只能是 布尔型,操作结果也是布尔值
- 优先级别:(!)>(&)>(︿)>(|)>(&&)>(||)。
- &与&&的区别:当&&的左侧值为false时,则将不会计算右侧的表达式
即左false则false;&无论任何情况,两侧的表达式都会参与计算。 - ||与|的区别同&与&&。
- 位运算符
运算符 | 含义 | 运算规则 |
& | 按位与 | 两个操作数都是1结果才为1 |
| | 按位或 | 两个操作数一个是1结果为1 |
︿ | 按位异或 | 两个操作数相同结果为0,两个操作数不同结果为1 |
~ | 按位非(取反) | 操作数为1,结果为0;操作数为0,结果为1 |
<< | 左移 | 右侧空位补0 |
>> | 右移 | 左侧空位补最高位,即符号位 |
>>> | 无符号右移 | 左侧空位补0 |
- 提示
- 操作数以二进制位为单位进行运算
- 位运算符的数值类型都是整数型,结果也是整数型,包括int和long
- 如果操作数是char,byte,short,位运算前其值会自动晋升为int,结果为int
- 条件运算符
- 条件运算符:是java中唯一需要3个操作数的运算符,所以又称三目运算符或三元运算符
- 条件运算符的语法规则:条件?表达式1:表达式2
- 在语法中,首先对条件进行判断,如果为true结果返回表达式1的值
- 如果结果为false,返回表达式2的值
- 优先级和结合性
3
优先级 | 运算符 | 结合性 |
1 | ();[] | 从左向右 |
2 | !,~,++,—— | 从右向左 |
*/% | 从左向右 | |
4 | +,— | 从左向右 |
5 | <<,>>,>>> | 从左向右 |
6 | <,<=,>,>=,instanceof | 从左向右 |
7 | ==,!= | 从左向右 |
8 | & | 从左向右 |
9 | ︿(按位异或) | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =,+=,—=, *=,/=,%=,&=,|=,︿=,~=,<<=,>>=,>>>= | 从右向左 |
- 提示:
- 优先级最低的是赋值运算符,其次是条件运算符
- 单目运算符包括!,~,++,——,优先级最高
- 可以通过()控制表达式的运算顺序,()的优先级最高
- 总体而言,优先级顺序为算数运算符大于关系运算符大于逻辑运算符
- 结合性为从右向左的只有赋值运算符,三目运算符,单目运算符(一个操作数)
总结:
- 标志符的命名规则
- 注释的添加
- 数据类型
- 变量与常量
- 数据类型转换(使用赋值运算符的强制类型转换)
- Scanner的常用方法
- 演示三元运算符
- 练习题
- 正确使用标识符命名
- 数据类型的交换与转换
- 使用变量输出个人信息与用常量求圆的面积与周长
- 使用算数运算符和关系运算符实现4位会员卡号求和 并实现模拟幸运抽奖
- 输入存入本金,求n年后本金变成?
- java中的标识符和使用时需要遵循的规则。
- java中的注释分为单行注释,多行注释和文档注释,明确几种 注释的使用场合和使用方法。
- Java中丰富的数据类型,7种类型的常量。
- Java中与常量对应的变量的作用和使用方法。
- Java中数据类型之间的转换,主要自动类型转换,强制类型转换。
- java中六大运算符,分别是赋值运算符,,算数运算符,
关系运算符,逻辑运算符,位运算符和条件运算符。
- 本章总结
- 程序流程包括顺序结构,选择结构和循环结构。
- 顺序结构是指程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。
- 选择结构是根据条件判断的结果来选择执行不同的代码。
在Java中提供了if和switch语句来实现选择结构。 - 循环结构是指根据条件来重复的执行某段代码。
在java中提供了while,do-while,for语句来实现循环结构 - 跳转语句中,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基础