Java学习——Java基础,
Java学习——Java基础,
一、 Java概述
1. Java语言概述
1.1 Java应用:擅长互联网软件(淘宝、京东、电商、P2P等)、企业级应用(ERP、OA、CRM、BOS等)、手机终端应用(安卓系统);
1.2 JavaSE(基础版):Java的基础知识,学完JavaSE并不能开发大型项目;
1.3 JavaEE(企业版):Java的高级知识及整个生态圈,学完JavaEE 就可以开发各种大型项目;
2. 常用DOS命令
cd. . : 退回到上一级目录 ; 系统最顶层的盘符是 C/D/E/F 等盘符
cd\ : 退回到根目录
cd tools : 进入tools文件夹
d: —— 回车 :盘符切换
cd d:\234 : 进入d盘的234文件夹,再切换盘符( d: )才能进入d:\234; 切换地址:cd /d d:\234
Dos 中进入数据库: mysql -u root -p ,回车,然后输入密码;
dir : 列出当前目录下的文件以及文件夹
cls : 清除屏幕
ipconfig: 查看本机的相关网络配置
3. Java开发环境搭建:JDK 和 JRE
安装 JDK7(Java开发工具包), 验证: 在DOS下 ——切换到E:\Java\bin 中——输入:java
JRE: Java运行环境
JDK 包含 JRE
Tab 键: 自动匹配
Java 特性: 跨平台(即操作系统)运行:Windows、Linux、Mac
一次编写到处运行;实现跨平台需要依赖Java的虚拟机JVM:虚拟机是真正运行Java程序的环境
虚拟机本身是不跨平台的;虚拟机包含在JRE中,所以也包含在JDK中
4. HelloWorld 程序
源文件( .java )——编译(字节码文件 .class)——运行
编译和运行 需要使用DOS命令来实现
Java 类名(class)必须与文件名相同,大小写一致
Java 大小写敏感
5. 配置环境变量
属性- 系统变量- PATH-新建: E:\Java\jdk1.7.0_02\bin ;(最后加上分号;)
这样,在任何目录下都可以编译和运行 javac 和 java
以后编译的方法: javac HelloWorld.java ; 以后运行的方法: java HelloWorld
6. Notepad++ 软件
二、 Java基础语法
1. 基础语法
完整代码: 类 + 主方法 + 输出( System.out.println( " xxx " ); )
1.1 注释 : 单行注释 : //注释内容; 多行注释 : /* 注释内容 */; 文档注释 : /** 注释内容 */
一般公司要求: 代码中有30%的注释
1.2 关键字: 被Java语言赋予特殊含义,具有专门用途的单词; 关键字 全是小写字母
1.3 标识符: 就是给 类,接口,方法,变量等起名字时使用的自定义的字符序列; 命名规则
1.4 数据类型
1.4.1 基本数据类型 :
整数(byte、short、int、long)、小数(float、double)、字符类型(char)、布尔类型(boolean)
1.4.2 引用数据类型:
是强大的数据类型,它是基于基本数据类型创建的。JavaSE中提供了一个超级类库,类库中包含了近万种引用数据类型
1.4.3 数组 , 类 , 接口
1.4.4 常量 : 常量就是不变的数据量, 在程序执行的过程中其值不可以发生改变
常量分类 : 整数 , 小数 , 布尔类型 , 字符类型(只能包含一个字符,不可为空, 用' ' ) , 字符串(用 " ", 可包含0-N个字符, 字符串String 类型是一种引用类型 )
1.5 变量
1.5.1 变量是内存中的一个装载数据的容器,只能用来存数据和取数据; 计算机存储单元
1.5.2 基本类型(4类8种):
整型: byte( 1字节 ) , short( 2字节) , int(4字节), long(8字节)
浮点型: float(4字节), double(8字节)
字符型: char(2字节)
布尔型: boolean(1字节)
1.5.3 常量与类型
整数常量 根据所在范围来确定类型; java中默认的整数类型是 int 类型;
1.5.4 定义变量(创建变量)
eg: int a =10 ; 变量使用的注意事项
1.5.5 数据类型转换
自动转换: 从小到大:byte- short-int-long-float- double 小的数据类型可转换大的数据类型
强制类型转换: eg: int gl = ( int ) d ;
1.6 运算符
算术运算符、赋值运算符、比较运算符、逻辑运算符、三元运算符:(条件表达式)?表达式1 :表达式2 ;
1.7 引用数据类型 (Java中已有的类)
1.7.1 Scanner 类: 接收键盘输入
创建 Scanner类的变量: 数据类型 变量名 = new 数据类型( ); eg: Scanner sc = new Scanner( );
使用引用类型的方法(功能): 变量名 . 方法名( ) ;
Scanner类 的作用: 在命令行中接收键盘的输入
使用Scanner 类的步骤:
1. 导入包(import),指明并导入类所在的文件夹的路径( java/util )
2. 创建Scanner 类型变量
3. 使用Scanner类中的功能方法,完成键盘输入
Scanner类的方法
1. nextInt( ) :接收键盘输入的整数 2. next( ):接收键盘输入的字符串
1.7.2 Random类: 产生随机数
Random类的方法
nextInt( k ): 产生0—k (不包含k)之间的整数的随机数
nextDouble( ): 产生 0.0 ——1.0(不包含1.0 )之间的浮点随机数(随机小数)
伪随机数:Java虚拟机根据人写好的一个算法生成出来的
1.8. 流程控制语句
选择结构 if -else 语句、三元运算、循环语句while、for 循环、循环语句 do-while
无限循环、循环嵌套、选择结构 switch
跳转语句: break,continue
break:终止循环; continue: 终止本次循环,开始下一次循环
1.9 数组
1.9.1 数组的定义
数组的定义1:数据类型[ ] 变量名 = new 数据类型[ 存储元素的个数 ] ; eg: int[ ] arr = new int[3]; #数组arr可存储3个整数
数组的定义2 : 定义的同时,对元素进行赋值; eg: int [ ] arr = new int [ ]{ 1,2,3,4,5,6 };
注意: new 后面的中括号中,不允许写任何内容,写了就编译失败
数组的定义3 — 最简便方法:直接大括号赋值 int [ ] arr2 = { 0,2,4,6,8,10 };
1.9.2 JVM (Java虚拟机)的内存划分,分成5个区域:
1. 寄存器: 内存和CPU之间
2. 本地方法栈: JVM调用了系统中的功能
3. 方法和数据共享区: 运行时期 class 文件进入的地方
4. 方法栈: 所有的方法运行时,进入的内存
5. 堆: 存储的是 容器(即:数组)和对象
1.9.3 main 方法 进入栈内存运行( main压栈运行 )
JVM在堆内存开辟空间,存储数组容器
内存地址
数组遍历
1.9.4 数组操作中,常见的两个异常:
1. 数组的索引越界异常;
2. 空指针异常; eg: arr2 = null #arr2 不再保存数组的地址了
1.9.5 二维数组
定义方式:
方式1: int[ ][ ] arr = new int[3][4];
方式2( 不推荐) : int [ ][ ] arr = new int[3][ ]
方式3 : 最简单的方式: int [ ][ ] arr = { [1,4], [3,6,9],[0,9,8] }; int [ ][ ] arr = { {1,2},{3,4,5,6},{7,8,9} };
二维数组的元素访问 和 遍历
1.10. 方法: 实现某个功能的办法
1.10.1 方法概述
1.10.2 方法的语法格式:
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2,......){
执行语句 .... return 返回值;}
1.10.3 调用方法: 方法名(参数1,参数2,.... );
1.10.4 方法的定义和使用 的注意事项:
1. 方法不能定义在另一个方法的里面
2. 写错方法名字
3. 写错了参数列表
4. 方法返回值是void,方法中可以省略return不写;return 下面不能有代码
5. 方法返回值类型, 和 return 后面数据类型必须匹配
6. 方法重复定义问题
7. 调用方法的时候,返回值是void,不能写在输出语句中
1.10.5 方法的重载(overload)
(1)方法的重载: 在同一个类中,允许出现多个同名的方法,只要方法的参数列表不同即可(包括:参数的个数、数据类型、顺序 不同),这样方法就是重载;
(2)方法重载的注意事项:
1. 参数列表必须不同; 2. 重载 和 参数变量名 无关; 3. 重载 和 返回值类型 无关
4. 重载 和 修饰符 无关;
技巧: 重载 只看 方法名 和 参数列表
1.10.6 参数 传递
1.11 引用数据类型(类)
1.11.1 引用数据类型(类)的分类:
1. Java已经提供好的类: 如Scanner类、Random类等
2. 自己创建的类
1.11.2 自定义数据类型概述:
类,是引用数据类型
1.11.3 类的定义 和 使用
Java 代码映射成现实事物的过程 就是 定义类的过程
事物的方法——功能; 事物的属性——变量;
类的定义格式
public class 类名 { 属性定义:修饰符 数据类型 变量名=值 方法定义:修饰符 返回值类型 方法名(参数列表){
..... } }
自定义的 内存图
1.12. ArrayList集合
ArrayList集合是一种容器,也是一种引用数据类型;
1.12.1 创建 集合引用变量的格式: 数据类型<集合存储的数据类型> 变量名 = new 数据类型<集合存储的数据类型>( );
eg: ArrayList<String> array = new ArrayList<String> ( );
注意:1. 要将数据存储到集合的容器中,所以在创建集合引用变量的时候,必须要指定好存储的类型是什么;
2. <集合存储的数据类型>中的数据类型必须是引用数据类型,不能是基本数据类型(集合不存储基本类型)
8种 基本数据类型( byte,short,int,long,float,double,char,boolean ) 对应 8种引用数据类型( Byte, Short, Integer,Long,Float,Double,Character, Boolean )
eg : 创建一个集合容器的步骤:
1. 使用ArrayList 时先导入: import java.util.ArrayList ; 2. ArrayList<String> array = new ArrayList<String>( ); 3. 调用方法: 变量名.方法
eg: import java.util.ArrayList;
public class ArrayListDemo{
public static void main(String[] args){
//创建集合容器,指定存储的数据类型
//存储字符串
ArrayList< String > array = new ArrayList< String > ();
}
}
1.12.2 集合中常用的方法
1. boolean add( Object obj ): 将指定元素obj追加到集合的末尾; 方法中的参数类型 与 定义集合对象时的类型是一致的
2. Object get( int index) : 返回(获取)集合中指定位置上的元素
3. int size( ) : 返回集合中的元素个数(即:集合的长度)
1.12.3 集合的遍历
集合的索引从0开始,到 size( )-1; 方法 get( int index )
1.12.4 集合中的常用方法补充
1.12.5 编程练习
(1)循环练习:
1. 1-100之间的奇数求和
2. 求水仙花数
3. ASCII 编码表 :常用符号用二进制数来表示; 数字0-9 对应ASCII 为 48-57;字母a-z 对应 97-122
字母A-Z 对应 65-90; 字符是 char 类型,整数是 int 类型
4. 利用for循环打印ABC-Z 26个大写字母和26个小写字母
5. 利用for 循环打印 9*9 乘法表
(2)数组方法练习:
1. 定义打印数组元素方法,按照给定的格式打印 [ 11,33,44,22,55]
2. 数组元素逆序
3. 数组元素选择排序: 选择排序 和 冒泡排序
4. 数组的二分查找法(折半查找法)
1.13. Eclipse开发工具
1.13.1 Eclipse: 由IBM创建开发的, 是强大的Java集成开发工具,自动编译,检查错误。大公司中就是使用Eclipse进行开发; 免费,开源,自由安装其他插件
1.13.2 Eclipse 的下载、安装、卸载:
www.eclipse.org ( org是非营利性组织 )
安装: 解压后就能使用
卸载: 只需要将文件夹删除即可
注意: 开发软件的安装目录中,尽量不要出现空格和中文
1.13.3 Eclipse 的使用
(1)工作空间 和 新建工程:
new——java Project——day08
src : 源代码; src——右键——new——class(类名的首字母大写)
(2)HelloWorld 编写
(3)字体设置: 编辑器 和 控制输出台 字体, 一般为 : 14 或 16 即可
(4)窗口设置:
除了 Package Explorer、代码编写区、控制台,还可以保留 Outline; Reset Perspective : 重置窗口
去掉多余的默认注释;
(5)Eclipse快捷键
1. Alt + / 自动补全
eg: 输入: syso + Alt+ / , 选择并回车——自动补全 标准输出
Sc + Alt + / : 自动补全Scanner类,并导入包
int + Alt + / : 自动给变量起名
for + Alt + / : 第一个选项是:迭代一个数组(数组遍历)
main + Alt + / :自动补全main方法 public static void main(String[ ] args)
2. Ctrl + Shift + F : 代码格式化(当代码很乱时) 或者: 鼠标右键—Source——Format
3. Ctrl + / 单行注释; 再按一次: 取消单行注释
4. Ctrl + Shift + / 多行注释 (需要先选中多行)
Ctrl + Shift + \ 取消多行注释(光标在多行注释内即可取消,不用全部选中)
5. Ctrl + Shift + o 导入包的快捷键(光标停在包的行)
6. Alt + 上下箭头 : 移动当前行代码
7. Ctrl + Alt +上下箭头: 复制当前代码行到上一行/下一行(包含复制和粘贴,也可选中多行进行复制)
8. Ctrl+D :删除当前行
9. Ctrl + 1 :意见提示功能(对于小X 的错误)
(6)断点调试: 在 有效行的行号处双击 即可
(7)工程删除 和 导入:
工程删除: 右键——delete
导入: Package Explorer——import——General——Existing Projects ... ——Browse——添加工程目录
1.14 面向对象
理解什么是面向过程、面向对象
面向对象举例
面向对象思维方式的好处
1.15. 类与对象
1.15.1 对象在需求中的使用:
总结:
1. 先按照名词提炼问题领域中的对象
2. 对 对象进行描述,其实就是在明确对象中应该具备的属性和功能
3. 通过new 的方式就可以创建该事物的具体对象
4. 通过该对象调用它以后的功能
1.15.2 对象在代码中的体现:
1. 定义类的格式:
public class 类名{ 数据类型 变量名1; 数据类型 变量名2; 修饰符 返回值类型 方法名(参数){ 执行语句;} }
属性和功能 统称为:事物中的成员
2. 创建对象的格式: 类名 对象名 = new 类名();
1.15.3 对象的内存图
1.15.4 类 和 对象的区别:
类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体
1.15.5 局部变量 和 成员变量的区别
1. 定义位置上的区别:
成员变量: 定义在类中,方法外面
局部变量: 定义在方法内,或 语句内
2. 作用域不同:
成员变量:作用域最大:整个类
局部变量:只作用于方法内或语句内
3. 默认值不同
成员变量: 有自己的默认值
局部变量:没有默认值,未赋值不能使用
4. 内存位置不同:
成员变量:跟随对象进入堆内存存储
局部变量:跟随自己的方法,进入栈内存存储
5. 生命周期不同:
成员变量:跟随对象,在堆内存中存储,需要等待JVM清理; 生命相当较长
局部变量: 跟随方法,方法出栈则局部变量消失,生命相对较短
1.15.6 基本类型 和 引用类型 作为方法的参数传递
1.16. 封装
1.16.1 封装概述:
面向对象的三大特征:封装、继承、多态
方法、类 都是一个封装体
封装的好处:
1. 提高了代码的复用性
2. 隐藏了实现细节,还要对外提供可以访问的方式,便于调用者的使用,这是核心之一,也是封装的概念
3. 提高了安全性
1.16.2 封装举例
1.16.3 私有 private:
private 属于成员修饰符,不能修饰局部变量; 被private 修饰的成员,只能在自己的本类中被使用;
private 又被称为:权限修饰; 对私有变量 提供公共的访问方式: 调用方法;
get 和 set 方法:
一般对成员属性的访问动作:赋值(设置 set)、取值(获取,get)
因此对私有的变量访问的方式可以提供对应的 setXxx 或 getXxx 的方法
总结:
1. 类中不需要对外提供的内容都私有化,包括属性和方法。以后再描述事物,类中的属性都应该私有化,并提供setXxx 和 getXxx 方法对其进行访问
2. 注意: 私有仅仅是封装的体现形式而已
私有化所有的属性(成员变量),必须写对应的get/set 方法;
凡是自定义的类、自定义的属性(成员变量),都应该私有化,并且提供get/set方法
1.16.4 this 关键字:
(1)成员变量 和 局部变量的同名问题:
this 关键字 用来区分成员变量 和 局部变量的同名问题
在方法中想要访问成员变量,则需要在成员变量名前面加上this: “ this. xxx ”
(2)对象的内存解释
(3)this 关键字 可以理解为:“本类的对象 引用”, 即:哪个对象调用的此方法,this就表示哪一个对象
有“this.”是成员变量,没有“this.”是局部变量
(4)this 内存图
(5)this的应用: 比较年龄
相关文章
- 暂无相关文章
用户点评