java面向对象前的基础

java面向对象前的基础,第1张

java面向对象前的基础

目录

java基本

1.什么是编程?

2.什么是java?

3.解释性和编译性语言

4.java语言的应用场景

5.java发展史(时间节点1996、2009)

6.java特点

7.java的跨平台性

8.java语言体系

9.java开发环境、运行环境和JVM

JDK(开发环境):

JRE(运行环境):

JVM(虚拟机):

总结开发环境(JDK)、运行环境(JRE)和虚拟机之间的关系

10.java运行的步骤

什么是运行?

11.用控制面板运行java程序注意点

12.如何让 *** 作系统找到.java文件,即找到java程序源

13.如何让 *** 作系统找到.class文件,即找到可执行文件

14.为什么要先编译成.class类型的字节码?这样的字节码有什么好处?

采用字节码的好处:

15.java常用转义符

Unicode码

标识符和关键字

1.标识符

标识符的命名规则

2.关键字

3.保留字

java变量

1.为什么需要变量?

2.什么是变量

3.变量的使用

变量的定义

变量的含义

变量的类型(依照作用域划分)

变量的三要素

4.数据类型

基本数据的类型转换

1.隐性(自动类型转换)

2.显性(强制类型转换)

java运算符

1.什么是运算符?

2.运算符

程序控制结构

三大流程控制语句

1) 顺序控制

2) 分支控制(if-else)

switch分支控制

3) 循环控制

数组

1.为什么需要数组

2.数组的介绍

3.数组的使用?

4.定义数组的方式:

数组的注意

数组赋值机制

二维数组

动态初始化:类型 数组名=new 类型大小

静态初始化:类型 数组名 = {{值 1,值 2..},{值 1,值 2..}}

注意:


java基本 1.什么是编程?

编程就是让计算机为了解决某个问题而使用某种程序设计语言编写代码,并最终得到结果的过程。即人和计算机之间通过程序设计语言进行交流的过程就是编程

2.什么是java?

java是一门高级的、面向对象的(oop)、可以跨平台的、解释性编程设计语言

3.解释性和编译性语言

解释性语言:源代码不能直接编译成机器语言,必须要先经过一次编译成中间代码,然后再对中间代码进行解释才能变成机器码 特点:源代码—>中间代码—>机器语言

编译性语言:只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以;因此其执行的效率比较高 特点:程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些

4.java语言的应用场景

● 服务器程序
银行,证券交易平台,电子商务后台.... Android应用
安卓手机,各种移动设备,智能家电…
● 软件工具
开发工具eclipse, IneteliJIdea
● 嵌入式领域
智能卡,传感器上
● 大数据技术
Hadoop以及其他大数据处理技术都是用Java

5.java发展史(时间节点1996、2009)

1990 sun公司启动绿色计划——>1992 oak语言(Java)——>1996 Java JDK1.1版本正式发行——>sun公司在2009年被Oracle(甲骨文)公司收购 之后 JDK改成jJDK 5 JDK 6的命名规则

Java语言目前有Sun公司维护

6.java特点

● 开源
● 简单、高效
● 面向对象(最核心的部分oop)
● 平台无关性(跨平台性):通过JVM虚拟机实现
● 交互式特性
● 多线程机制
● 动态的内存管理机制
●安全性

7.java的跨平台性

原因:JVM
跨平台性的实质:
准备:通过程序员所编写的代码是.java文件,而这文件机器是不能识别的,因为java是解释性语言所以需要有个中间代码然后再到机器语言,所以需要通过javac程序将.java文件先编译成字节码类型的.class,JVM接收.class文件,将其解释成字节码,然后运行
实质:不同 *** 作系统有自己相应的JVM,所以.class文件可以在不同的 *** 作系统中去运行

8.java语言体系

1.javaSE:标准版的java开发平台,是java技术的基础和核心,其他所有都需要包含javaSE

2.javaEE:企业级开发平台,内除了有javaSE的部分外,还增添了企业所需要的程序

3.javaME:微型版

9.java开发环境、运行环境和JVM JDK(开发环境):

全称(Java Development Kit Java开发工具包)
组成:运行环境和java开发工具包 即JRE+java开发工具

开发工具
组成:编译工具(javac.exe)和打包工具(jar.exe)等
位置:JDK文件夹下的bin文件夹中是java开发工具

JRE(运行环境):

全称(Java Runtime Environment Java运行环境)
组成:JVM(虚拟机)+核心类库
位置:JDK文件夹下的jre文件夹中是JRE运行环境

核心类库
组成:java的核心包 例如:lang包、io包等
位置:运行环境文件夹(JRE)里面的lib文件夹是核心类库

JVM(虚拟机):

全称(Java Virtual Machine)
位置:运行环境文件夹(JRE)里面的bin文件夹是虚拟机

总结开发环境(JDK)、运行环境(JRE)和虚拟机之间的关系

 

10.java运行的步骤 什么是运行?

有了可执行的Java程序(字节码文件),通过运行工具java.exe对字节码进行执行,本质就是.class装载到JVM机执行

1.程序员编写.java源文件

2.将.java文件通过JDK自带的开发工具javac将文件编译生成.class文件(字节码文件)

3.通过JDK的开发工具java解释.class文件成为机器语言(通过JVM)

Java源代码.java文件---->编译器---->JVM可执行的.class文件字节码(即虚拟指令)---->JVM---->JVM中解释器----->机器可执行的二进制机器码---->程序运行。

11.用控制面板运行java程序注意点

public修饰的类名与文件名必须完全一致,Java应用程序的执行入口是main()方法,一个源文件只能有一个public类方法:main方法可以写在非public的类中

12.如何让 *** 作系统找到.java文件,即找到java程序源

设置Path环境:Path环境变量是 *** 作系统用于查找可执行程序的环境变量(寻找.java文件)

13.如何让 *** 作系统找到.class文件,即找到可执行文件

设置ClassPath环境变量是 *** 作系统用于查找字节码文件的环境变量(寻找.class文件)

14.为什么要先编译成.class类型的字节码?这样的字节码有什么好处?

字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:

Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

15.java常用转义符
  1. t:一个制表位,实现对齐功能

  2. n:换行符

  3. :一个

  4. ":一个"

  5. ':一个'

  6. r:一个回车

Unicode码

通俗的来讲,为了使不同国家的汉字都能被计算机表示(不需要装相应的语言插件),全球统一了一个储存所有国家文字的编码表(unicode编码表),这个编码表中给每一个字符都编写了顺序,可以根据序号在unicode编码表中查看所对应的字符。

虽然unicode编码表规定了全球的汉字,但是他没有给出表达的方式,而UTF-8和其他编码表的作用就是将unicode编码表中的字符表示出来,相当于unicode是一个水果品种,在这个地方的叫法是A,而在另外的一个地方又把它叫B,虽然A和B都是同一个物种,但因为叫法不同,所以会产生误解(乱码问题)

unicode码只在传输过程中使用,但在储存时需要用到其他编码方式

标识符和关键字 1.标识符

含义:程序员自己需要命名,表示程序员自己所定义的内容
标识符的作用域:变量名、包名、类名、方法名、常量名、接口名等

标识符的命名规则

必须遵守合法标识符规则:
● 由26个英文字母大小写,0-9 ,_或 $ 组成 数字不可以开头。
● 不可以使用关键字和保留字,但能包含关键字和保留字。
● Java中严格区分大小写,长度无限制。
● 标识符不能包含空格。
● 注意:在起名字时,为了提高阅读性,要尽量有意义。

约定的标识符规则:
● 包名:多单词组成时所有字母都小写。
● 类名、接口名:多单词组成时,所有单词的首字母大写[大驼峰]。
●变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小驼峰]简称 驼峰法。
● 常量名:所有字母都大写。多单词时每个单词用下划线连接。

为了遵守行业内定,所以我们要同时满足以上两个条件,规范使用标识符

2.关键字

含义:java语言预先定义的具有特殊含义的,用来做专门用途的字符串(全部都是小写英文单词)
注意:关键字全是小写字母,main并不是关键字

3.保留字

现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

java变量 1.为什么需要变量?

变量是程序的基本单位

2.什么是变量

变量就是相当于内存中的一个存储容器

3.变量的使用

因为java是一门强类型语言,所以变量必须先定义再使用 局部变量必须赋初值后才能进行使用,而成员变量会有初始值:基本数据是0、0.0 引用类型是null

变量的定义
[访问修饰符][修饰符]变量名 = 数值;
其中[]中的内容可以没有也可以更改
变量的含义

在某个定义的数据类型的存储区域内,数值可以不断的进行变化(没有被final修饰的)

变量的类型(依照作用域划分)

1.在一个方法中的局部变量,这个变量只能在这个方法中起作用
2.成员变量,在类中定义的变量,这个变量可以在这个类中起到作用

变量的三要素 4.数据类型

作用:
1.可以进行算术运算
2.开辟了相应的变量空间,减少浪费内存的现象

从大的方面可以分成基本数据类型和引用数据类型

目前所学到的基本数据类型1. byte:表示占据1个字节的整型数据类型 默认值:02. short:表示占据两个字节的整型数据类型 默认值:03. int:表示占据4个字节的整型数据类型 默认值:04. long:表示占据8个字节的整型数据类型 注意:声明时需要在数值后加上l或者L 默认值:05. float:表示占据4个字节的浮点型数据类型 注意:声明时需要在数值后加上f或者F 默认值:0.06. double:表示占据8个字节的浮点型数据类型 默认值:0.07. char:表示占据1个字节的字符型数据类型 注意:数值可以是整形或者是用单引号括起来的单个字符 默认值:空格8. boolean:没有显性的表明boolean所占用的大小 注意:boolean只有true和false 默认值:false

注意:
1个字节占据8个bit位
整型变量类型:byte、short、int和long
浮点变量类型:float和double
字符变量类型:char
布尔变量类型:boolean
默认整型变量的类型:int
默认浮点变量的类型:double

目前所学到的引用数据类型1. String:表示一个字符串,用双引号括起来2. 数组3. 类 基本数据的类型转换 1.隐性(自动类型转换)

基本数据类型在参与算术运算时,会自动先将精度小的数据类型全部自动转换成精度最大的数据类型,然后再进行运算;即先转换再运算
例如:

byte a=2;
int b;
b=a;
将a的byte自动转换成int类型
自动转换规则char->int->long->float->doublebyte->short->int->long->float->double细节byte、short和char之间不会相互转换byte、short和char在计算时会转换成int 2.显性(强制类型转换)

基本数据类型在参与算术运算时,可以通过(数据类型)强制性的将后面的第一个转换为括号内的数据类型,即容量大的数据类型转换成容量小的数据类型,使用是要加上强制转换符(),但可能会造成精度缺失
例如:

int a=2;
byte b;
b=(byte)a;
将a的int强制转换成byte类型
细节

强制转换符()只对最近的一个数据起作用

char类型可以存储int的常量,若要储存int变量必须要使用强制转化符 java运算符 1.什么是运算符?

运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等

2.运算符

算术运算符可以对基本数值类型进行运算

关系运算符:6个(结果为布尔值)>判断a>b?<判断a<=判断a<=b?>=判断a>=b?==判断a==b?!=判断a!=b 逻辑运算符:6个(逻辑运算符左右两边都为布尔值,逻辑运算结果也是布尔值)(短路与) && : 当且仅当逻辑运算符两边 *** 作数均为true,结果才是true(短路或) | |:当且仅当逻辑运算符两边 *** 作数均为false,结果才是false(非) !:反转 *** 作数的逻辑状态(逻辑与) &: 当且仅当逻辑运算符两边 *** 作数均为true,结果才是true(逻辑或) |:当且仅当逻辑运算符两边 *** 作数均为false,结果才是false(异或) ^:当且仅当逻辑运算符两边 *** 作数不同时,结果才是true细节(短路与) &&:只要左边为false就立刻停止,不再进行后面的判断(短路或):只要左边为true就立刻停止,不再进行后面的判断(逻辑与) &和(逻辑或)| 会执行完整个语句短路与'&&'和短路或'||'的执行效率高,我们一般使用短路与和短路或 位运算符Java没有无符号数,计算机运算时,都是一补码的形式来运算(取反加1)&|~^:可以用来交换2个数字 a,b a^=b b^=a a^b 即可完成a、b的互换值>>n:右移n个单位,就是除(2^n)符号位不变,并用符号位补位<>>>:逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0 算术运算符+:正号-:负号*:乘/:除,只取整数部分(模运算)%:取余,只有整型才可以进行取余运算++:自增 只能作用于变量 ++a 先自增再进行运算 a++先运算再自增--:自减 只能作用于变量 --a 先自增再进行运算 a--先运算再自增+:加法-:减法+:字符串的加,结合字符串
条件选择:三目运算符
(条件)?(表达式1):(表达式2);
运算时是boolean值类型,如果条件为true就执行表达式1,否则执行表达式2
整个式子会发生隐性转换
程序控制结构 三大流程控制语句 1) 顺序控制

程序从上到下的地逐行执行,中间没有任何判断和跳转

2) 分支控制(if-else)

1. 单分支if

if(expression){    
    statement1;
(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号,
那么if只能控制第一条语句,其余语句不受if的控制])
}

说明:如果条件表达式为true机会执行代码块,否则不执行

2.双分支if-else

if(expression){    
    statement1;(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号会直接编译报错])
}else{    
    statement2;(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号,那么else只能控制第一条语句,其余语句不受else的控制])
}

 说明:if-else判断是从上往下逐一判断是否慢走条件表达式,如果满足其中一个就执行相对应的代码执行块然后退出if-else语句,即要执行只能选择一个执行

3.多分支if-else if-...-else

if(expression1){       
	statement1;(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号会直接编译报错])
}else if(expression2){        
	statement2;(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号会直接编译报错])
}else{
	statement3;(可以是条语句,也可以是多条语句[如果是多条语句且没有用大括号,那么else只能控制第一条语句,其余语句不受else的控制])
}

 

说明:要执行只能选择一个执行

4.嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外 层分支。[if-else语句如果没有使用大括号,会采用就近原则匹配]

switch分支控制

基本结构:

switch(表达式){    
    case 常量表达式1 : 语法1; break;    
    case 常量表达式2 : 语法2; break;    
    case 常量表达式n : 语法n; break;    
    default : 语法n+1; break;
}

 

switch中的表达式对应一个值:[整型(byte short int)、字符型(char)、枚举类型(enum)或字符串(String)类型] 当表达式的值等于常量表达式,就执行相应的语法块,break表示执行完语法块后会退出switch语法,否则会一直执行完剩余的所有 如果表达式的值没有匹配上对应的常量表达式,就执行default

注意: 表达式的数据类型必须是和case后面的常量的数据类型保持一致,或者可以自动转成可以相互比较的类型(自动数据类型转换)

3) 循环控制

1. for循环控制

基本结构:

for(循环变量初始化;循环条件;循环变量的迭代){
		循环 *** 作;
}
  1. for 关键字,表示循环控制

  2. for 有四要素: (1)循环变量初始化(2)循环条件(3)循环 *** 作(4)循环变量迭代

  3. 循环 *** 作 , 这里可以有多条语句,也就是我们要循环执行的代码

  4. 如果 循环 *** 作(语句) 只有一条语句,可以省略 {}, 建议不省略

注意:

1) 循环条件是返回一个布尔值的表达式
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

2. while循环控制

基本结构:

while(循环条件){    
	循环体;
    循环变量迭代;
}

注意:

1) 循环条件是返回一个布尔值的表达式
2) while 循环是先判断再执行语句

3. do-while循环控制

基本结构:

do{
    循环体;
    循环变量迭代;
}while(循环条件);
  1. do while 是关键字

  2. 也有循环四要素, 只是位置不一样

  3. 先执行,再判断,也就是说,一定会至少执行一次

  4. 最后 有一个 分号 ;

注意:

1) 循环条件是返回一个布尔值的表达式
2) do..while 循环是先执行,再判断, 因此它至少执行一次

break关键字(跳出循环语句)

基本break语句:break; 作用:用来终止某个循环,直接结束循环

嵌套循环使用break来结束外部的循环:break lable;

lable ;for(int i=1;i<10;i++){
    for(int j=1;j<=i;j++){
        if(j==5){
            break lable;
        }
    }
}

结构解释:lable是给外循环加的一个标签,通过break lable;这条语句可以直接结束外部的循环(同时内部循环也会自然而然的被中断)
break lable:同时中断内外循环,回到lable处,越过lable下的循环

continue关键字(结束本次循环,进行下一次循环)

基本continue语句:continue;
作用:结束本次循环,进入下一次循环

嵌套循环使用continue来结束外部的循环:continue lable;

lable ;for(int i=1;i<10;i++){
    for(int j=1;j<=i;j++){
        if(j==5){
            continue lable;
        }
    }
}

结构解释:lable是给外循环加的一个标签,通过contin lable;这条语句可以结束本次外循环,进行下一次的外 循环
中断continue lable 所在的内部循环,继续lable下的外部循环。  

return跳转控制语句

当在一个方法中,如果方法是void类型的返回值,则 return;表示直接结束方法

数组 1.为什么需要数组?

有时候人们需要储存许多相同类型的数值,如果使用变量就需要一个一个去定义、赋值,这样很麻烦;而数组就可以很好地解决这个问题,定义一个数组储存相同类型的数值,再通过索引就可以得到相应位置的值,避免了不断定义变量的麻烦。

2.数组的介绍

数组可以存放同一个类型的许多数值。数组也是一种数据类型,而且是引用类型,数组是一块连续的内存空间。

3.数组的使用?

和变量一样数组也需要先定义再使用,但是和变量不同的一定是数组有相应的初值,而变量没有初值

4.定义数组的方式:

动态初始化:

数据类型[] 数组名=new 数据类型[数组长度]

静态初始化:

数据类型[] 数组名={1,2,4,5,6,7} 或数据类型[] 数组名=new 数据类型[]{1,2,3,4}

数组元素的索引:

数组中的每一个元素都有着一个下标,下标从0开始到[数组长度-1],如果想要调用相应的元素只需要 数组名[下标]即可调用

数组的注意

1) 数组是多个相同类型数据的组合,实现对这些数据的统一管理
2) 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3) 数组创建后,如果没有赋值,有默认值 int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char u0000,boolean false,String null
4) 使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组
5) 数组的下标是从 0 开始的。
6) 数组下标必须在指定范围内使用,否则报:下标越界异常 7)数组属引用类型,数组型数据是对象(object)

数组赋值机制

1) 数组在默认情况下是引用传递,赋的值是地址

二维数组 动态初始化:类型 数组名=new 类型大小 静态初始化:类型 数组名 = {{值 1,值 2..},{值 1,值 2..}} 注意:

如果一个二维数组定义时:int [] [] arr=new int[3] [];
只定义了其中有几个一维数组但是没有给一维数组定义长度,那么输出时会是null

二维数组的声明方式有: int[] [] y、int[] y[] 或者int y[] []
二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同
例如:int map = {{1,2},{3,4,5}}
由 map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5119233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存