1.Java语言发展史:
詹姆斯?高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
2.Java语言特点:
跨平台(移植性),开源.其中跨平台性指的是操作系统,
3. JVM:
JVM是java虚拟机(JVM Java Virtual Machine),java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台
4.JRE
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。( JRE = JVM + 类库 )
5.JDK
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等 ( JDK = JRE + JAVA的开发工具)
6. 常用Dos命令
Win + R , 输入cmd回车 --- 打开控制台
ping + ip 地址 能够查看网络是否联通
ipconfig 查看ip
cls 清屏
exit 退出
d: 回车 盘符切换
dir (directory) 列出当前目录下的文件及文件夹
cd (change directory) 改变指定目录(进入指定目录)
进入 cd 目录; cd 多级目录
回退 cd ..; cd\ (cd/)返回根目录
删除带内容的文件夹:
* rd + /s 文件夹名称(询问是否删除)
* rd + /q + /s 文件夹名称(直接删除)
notepad 创建文件
md (make directory) : 创建目录
rd (remove directory): 删除目录
del (delete): 删除文件,删除一堆后缀名一样的文件*.txt
7.环境变量及其配置:
为什么要配置环境变量,因为在dos命令行中如果需要运行某个程序,就得先进入到该程序所在的文件夹下,因此如果我们需要编译某个java文件,则必须将该java文件与编译器一起放在同一个文件夹下,会导致该文件夹东西过于繁杂,因此,我们需要对环境变量进行配置,让我们在其他文件夹下也可以运行javac.exe.
配置方法:
右键我的电脑,选择属性,选择高级系统设置,选择环境变量,选择系统变量下的path变量,点击编辑按钮,将javac.exe文件所在路径加入到变量值中.,并用封号隔开.
8.注释
概念用于解释说明程序的文字
分类:单行注释://注释文字 ; 多行注释:/*注释文字*/ ; 文档注释/**注释文字*/
作用:1.解释说明文字2.帮助我们调试程序.
9..helloWorld案例编写:
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“hello World”);
}
}
10. 关键字:
被Java语言赋予了特定含义的单词
特点:
A:组成关键字的字母全部小写
B:常见的代码编辑器,对关键字有特殊的颜色标记
11. 常量:
在程序的执行过程中,其值不可以发生改变的量
字面值常量
字符串常量 用双引号括起来的内容 "HelloWorld"
整数常量 所有整数 12,-23
小数常量 所有小数 12.23
字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母,单个符号 'a','0'
布尔常量 true,false
空常量 null(数组部分讲解)
自定义常量(面向对象部分讲解)
整数默认int类型,浮点数默认double类型,定义long类型数据的时候要加L,定义float数据类型的时候要加F.
12. 变量概述
变量类型: 是内存中的一小块区域,在程序的执行过程中,其值可以在一定范围内发生改变
变量作用:用来不断的存放同一类型的常量,并可以重复使用
13. 数据类型(重点!!!)
整数型
byte 占1个字节 -128到127
short 占2个字节
int 占4个字节
long 占8个字节
浮点型(小数型)
float 占4个字节
double 占8个字节
字符型
char 占2个字节 0-65535 可存汉字字符
布尔型
boolean 他的值要么是true,要么是false 占1个字节
14标识符
1).什么是标识符:就是给类,接口,方法,变量等起名字时使用的字符序列
2).标识符的组成
* 英文大小写字母
* 数字
* $和_
*中文(但及其不建议用)
3).注意事项(重点!!!):
1.不能使用关键字
2.不能以数字开头
4).常见命名规则(重点!!!):
* 包(其实就是文件夹,用于对类进行管理):*把包理解成我们的文件夹,一般是公司域名倒着写,com.itheima
*全部小写,多级包点隔开 举例 com,com.itheima
* 类或者接口
如果是一个单词,首字母大写
如果是多个单词,每个单词的首字母都大写
* 方法或者变量或者对象名
如果是一个单词,全部字母小写
如果是多个单词,从第二个单词开始首字母大写
* 常量
如果是一个单词,全部字母大写
如果是多个单词,每个单词之间用_分开
15.运算符
概念:对常量和变量进行操作的符号
表达式:用运算符连接起来的符合java语法的式子.不同的运算符连接的表达式是不同类型的表达式.
算术运算符:+, -, *, /, %
.赋值运算符:(由于java有常量优化机制,如果输入的常量在数据类型范围内则会自动进行强制类型转换):
=,+=,-=,*=,/=,%=
关系运算符(也叫比较运算符,也叫条件运算符):==,!=,>,>=,<,<=
1).无论你操作的数据是简单还是复杂,最终得到的结果都是boolean类型
2)."==" 不能写成"="
逻辑运算符
1).基本的:&,按位与,有false则false
|,按位或,有true则true
^,按位异或,相同为false,不同为true
!,逻辑非,非false则true,非true则false
2).特殊的:&&,逻辑与,左边为false,右边不执行,最终结果与&相同
||,逻辑或,左边为true,右边不执行,最终结构与|相同
三元运算符
格式:关系表达式?表达式1:表达式2;
16. 键盘录入(Scanner)
如何使用键盘录入数据?目前我们只能使用jdk提供的类Scanner
如何使用Scanner获取键盘录入数据呢?步骤如下:
A:导包
import java.util.Scanner;
在一个类中的顺序:package > import > class
三种导包操作:
1.快捷键(推荐):ctrl+shift+o (重点!)
2.手动输入import java.util.Scanner;
3.点击鼠标自动生成
B:创建键盘录入对象
Scanner sc = new Scanner(System.in);
C:接收数据
int i = sc.nextInt(); 整数
17. 随机数(Random)
作用:用于产生一个随机数
使用步骤:
导包:
import java.util.random;
创建对象:
Random r = new Random();
获取随机数:
int number = r.nextInt(10);
产生[1,10)之间的数.
18. 数组
1.概述_为什么需要数组?
*为了存储同种数据类型的多个值
*关于数组:
a.数组是用来存储同一数据类型的多个值的集合,可以将数组看成是一个容器
b.数组既可以存储基本数据类型,也可以存储引用数据类型
*数组的定义格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组中的编号叫索引.下标
数组初始化:
动态初始化
1).什么是初始化?
就是为数组开辟连续的内存空间,并为每个数组元素赋值
2).什么是动态初始化?
只给定数组长度,由系统给出每个元素的初始化值
3).动态初始化格式:
数据类型[] 数组名 = new 数据类型[数组长度];
4).不同数据类型使用动态初始化会有不同的默认值:
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
字符类型:char默认初始化值'\u0000'
静态初始化
1).什么是静态初始化?
在定义数组的时候,直接为每个数组元素赋值
2).静态初始化格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}
3)声明数组名:
数据类型[] 数组名
数组长度:数组名.length;
数组常见操作的两个问题:
数组索引越界异常:ArrayIndexOutofBoundsException
产生的原因:由于访问了数组中不存在的索引对应的元素造成的。
空指针异常:NullPointerException
产生的原因:由于数组的引用不再指向原来堆里面所对应的实体了,
而是被重新赋值为null,如果再用这个引用去访问实体中的元素时,就会发生该异常。
19. 二维数组:
概念:元素为一维数组的数组.
定义格式:
A:数据类型[][] 数组名;(推荐)
B:数据类型 数组名[][];
C:数据类型[] 数组名[];
初始化:
A:动态初始化
数据类型[][] 数组名 = new 数据类型[m][n];
m表示的是二维数组中一维数组的个数
n表示的是一维数组中元素的个数
B:静态初始化
A:数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...}};
B:数据类型[][] 数组名 = {{元素...},{元素...},{元素...}};
二维数组中一维数组的个数: 数组名.length
二维数组中每个一维数组中元素个数: 数组名[0].length
二维数组名配合索引可以获取到每一个一维数组。
每一个一维数组配合索引名可以获取到数组中的元素。
20. 方法:
概念:
其实就是完成特定功能的代码库
方法定义分为两部分:声明.实现
声明:大括号前面的内容全部交声明
修饰符 返回值类型 方法名(参数类型 参数1,参数类型2 参数2)
修饰符public
返回值类型:根据返回值而定
方法名:自定义(见名知意)
小括号的部分又被称为形式参数,小括号的内容可以简单理解在声明某个变量
实现:用大括号包起来的内容全部叫做实现
定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...) {
方法体;
return 返回值;
}
格式解释:
修饰符: 目前是public static
返回值类型: 用于限定返回值的数据类型
方法名: 为了方便我们调用方法的名字
参数类型: 用于限定调用方法时传入的数据类型
参数名: 用于接收调用方法时传入的数据的变量
方法体: 完成功能的代码
return: 结束方法,并且把返回值带给调用者
方法的参数如果是基本数据类型:形式参数的改变不影响实际参数.
如果参数是引用数据类型:形式参数的改变直接影响实际参数.
形式参数:用于接收实际参数的变量
实际参数:实际参与运算的变量
void修饰的方法只能单独调用
返回值类型为void是,如果方法中没有return,则方法中自动加上return.
21. 成员变量和局部变量的区别
1).定义的位置不同:
* 成员变量:在类中方法外
* 局部变量:在方法中或者方法声明上(形式参数)
2).在内存中的位置不同:
* 成员变量:属于对象,对象在堆内存
* 局部变量:属于方法,方法在栈内存
3).生命周期不同
* 成员变量:成员变量随着对象的创建而创建,随着对象的消失而消失
* 局部变量:局部变量随着方法的调用而存在,随着方法的弹栈而消失
4).初始化值不同
* 成员变量:有默认初始化值
* 局部变量:没有默认初始化值,在使用之前必须赋值
5).注意事项
*局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用就近原则.
*基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
*引用数据类型变量包括哪些:数组,类,接口,枚举
22. 面向对象特征
* 封装(encapsulation)
* 继承(inheritance)
* 多态(polymorphism)
* 抽象
23. 使用类
类需要通过创建对象来使用
格式:类名 对象名 = new 构造方法;
使用成员变量
对象名.成员变量
使用成员方法
对象名.方法名()
private关键字:
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问
this关键字:
代表所在类的对象引用
方法被哪个对象调用,this就代表哪个对象
使用场景:
局部变量隐藏成员变量
24. API
概述:应用程序编程接口.
使用方法
1:打开帮助文档
2:点击显示,找到索引,看到输入框
3:你要学习什么内容,你就在框框里面输入什么内容
举例:Random
4:看包
java.lang包下的类在使用的时候是不需要导包的
5:看类的描述
Random类是用于生成随机数的类
6:看构造方法
Random():无参构造方法
Random r = new Random();
7:看成员方法
public int nextInt(int n):产生的是一个[0,n)范围内的随机数
调用方法:
看返回值类型:人家返回什么类型,你就用什么类型接收
看方法名:名字不要写错了
看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的
/*****************String.StringBuilder.集合方法*************************/
/**************************** String ****************************/
构造方法:
String(String original):把字符串数据封装成字符串对象
String(char[] value);把字符数组的数据封装成字符串对象
String(char[] value,int index,int count);把字符数组中的一部分数据(从index索引开始拿count个字符)封装成字符串对象,
String类的判断功能
boolean equals(Object obj) :比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写.
boolean startsWith(String str):判断字符串对象是否以指定的str开头.
boolean endsWith(String str):判断字符串对象是否以指定的str结尾
String类的获取功能
int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符
int indexOf(String str):获取str在字符串对象中第一次出现的索引
String substring(int start):从start开始截取字符串
String substring(int start,int end):从start开始,到end结束截取字符串.包括start索引对应的字符,但不包括end索引对应的字符
String类的转换功能
char[] toCharArray() :把字符串转换为字符数组
String toLowerCase() :把字符串转换为小写字符串
String toUpperCase() :把字符串转换为大写字符串
s1.trim():去掉左右两端的空格(不包括中间的) 小红
s1.split(某个字符串):根据某个字符串,把原字符串分割成数组
/**************************** StringBuilder ****************************/
StringBuilder sb = new StringBuilder()
sb.capacity() 获取sb容器的容量(理论值)
sb.length():获取里面字符串的长度
sb.append(内容):向字符串中追加数据(返回的是对象)
sb.reverse():字符串翻转
StringBuilder转成字符串
sb.toString();返回一个字符串
字符串转换成StringBuilder
new的时候,直接把字符串放进去就好了
new StringBuilder(字符串/字符串变量)
sb. charAt(int index) :获取指定索引处的某个字符
sb. delete(int start, int end) 删除
/**************************** 集合 ****************************/
集合类 sh = new 集合类(参数)、
ArrayList<对象(对象名字和字符串对象)> array = new ArrayList<对象>();
array.size()获取长度(元素个数)
添加元素:
public boolean add(E e):添加元素
public void add(int index,E element):在指定索引处插入一个元素.
获取元素:
public E get(int index) : 返回指定索引处的元素.
集合长度:
public int size() : 返回集合中的元素的个数.
删除元素:
public boolean remove(Object o):删除指定的元素,返回删除是否成功.
public E remove(int index) : 删除指定索引处的元素,返回被删除的元素.
修改元素:
public E set(int index,E element) : 修改指定索引处的元素,返回被修改的元素.
/*****************String.StringBuilder.集合方法*************************/
|
|