Java基础1

1:计算机基础知识概述

· 计算机

计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。

· 计算机硬件

cpu

硬盘

内存

...

· 

软件开发

· 

什么是软件?

§ 软件是一系列按照特定顺序组织的计算机数据和指令的集合。程序设计的最终结果是软件。

§ 系统软件: 系统软件为计算机使用提供最基本的功能. 例如: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS

§ 应用软件: 系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 例如: Word, Excel, PPT, QQ, FeiQ, 极域, Editplus Eclipse

什么是开发?

§ 制作软件(我们就是干这个活)

· 

人机交互

· 

图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。

命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。

· 

键盘认识

· 

1,Tab (table)缩进

2,shift 转换键

3,Ctrl (control)控制

4,Windows

5,Alt(Alternative)交换,替换

6,空格

7,Enter 回车键

8,上下左右键

9,PrtSc(PrintScreen)屏幕截图

· 

快捷键和功能键

· 

Windows快捷键

§ Windows徽标键+L键切换用户

§ Windows徽标键+TAB键在任务栏上的按钮间循环

§ Windows徽标键+E键启动“我的电脑”

§ Windows徽标键+D键快速显示桌面

§ Windows徽标键+R键执行“运行”命令

§ Windows徽标键+U键打开“工具管理器”

§ Windpws徽标键+M键将所有窗口最小化

§ Windows徽标键+F键搜索文件或者文件夹

§ Windows徽标键+F1键显示Windows帮助

§ Windows徽标键+Shift+M键将最小化的窗口还原

§ Windows徽标键+Ctrl+F键搜索计算机

§ Windows徽标键+PauseBreak键打开“系统属性”对话框

Ctrl快捷键

§ Ctrl+A 全选

§ Ctrl+C 复制

§ Ctrl+V 粘贴

§ Ctrl+X 剪切

§ Ctrl+Z 撤销

2:常见DOS命令

· dir (directory) : 列出当前目录下的文件以及文件夹

· md (make directory) : 创建目录

· rd (remove directory): 删除目录

· cd : (change directory)改变指定目录(进入指定目录)

· cd.. : 退回到上一级目录

· cd\: 退回到根目录

· del (delete): 删除文件,删除一堆后缀名一样的文件*.txt

· exit : 退出dos命令行

· cls : (CLear Screen)清屏

3:计算机语言

· 语言:是人与人之间用于沟通的一种方式。

例如:中国人与中国人用中文沟通。而中国人要和美国人交流,就要学习英语。而且语言不通有时候也会闹出一些笑话。

· 计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语。

计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中的一种:Java语言。我们可以看一下老师在网上找的计算机语言排行榜

· 计算机语言分类

机器语言:机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。

汇编语言:汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。

高级语言:
使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。

4:Java语言概述和技术体系架构

· Java是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。

· Java的起源:一个Green项目

1995年,Oak正式更名为java

1996年,Sun公司发布JDK1.0

1998年,发布了1.2,也叫java2

1999年,Sun公司把java技术分成了J2SE,J2ME,J2EE

2000年,JDK1.3,1.4发布

2005年,Java的各个版本取消2

· Java语言的三种技术架构

J2SEJava 2 Platform Standard Edition)标准版

§ 是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。

J2EE(Java 2 Platform Enterprise Edition)企业版

§ 是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet Jsp等,主要针对于Web应用程序开发。

J2ME(Java 2 Platform Micro Edition)小型版

§ 是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

Java5.0版本后,更名为 JAVAEE JAVASE JAVAME

5:Java语言特性(跨平台)

· 高级语言的工作原理

windows下的c语言编程过程

§ c源程序(扩展名.c)-------->windows可执行性文件-------->windows操作系统

java语言编程过程

§ Java源程序(扩展名.java)-------->Java字节码文件(扩展名.class)-------->jvm虚拟机(跨平台)

6:JDK,JRE及JVM之间的关系

· JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。

· JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

· JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似

· 有图有真相

7:JDK的下载,安装及卸载

· JDK(Java Development Kit Java开发工具包)

· 下载jdk官方网址:

www.oracle.com

java.sun.com

· 安装jdk

傻瓜式安装,下一步即可。建议:安装路径不要有中文或者特殊符号如空格等。当提示安装JRE时,可以选择不安装。

8:开发第一个Java应用程序

class  Demo{

    public static void main(String[] args) {

        System.out.println("Hello World!");

    }

}

9:初学者常见问题讲解

· 提示1: 找不到文件

原因1:文件名字写错

原因2:扩展名隐藏

· 提示 2:找不到main函数

原因1:没写main函数,编译可以通过,运行不了

原因2:main函数写错

· 提示3:某软件包不存在

原因:可能是该大写的小写了,爱马虎的童鞋要注意了

· 温馨提示:java中可不可以用中文定义类名 ?

10:环境变量Path的配置,notepad命令

· 我的电脑--属性--高级--环境变量

· 编辑path环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。

· 打开DOS命令行,任意目录下敲入javac。

· 如果出现javac 的参数信息,配置成功。

· 配置path的好处?这种配置方式,一劳永逸

11:环境变量CLASSPATH的配置

· JVM查找类文件的顺序:

如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。

如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件

§ 值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。

§ 值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。

· 建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示。

12:editplus配置

· 如何把其添加至右键菜单

工具--参数设置--常规--把Editplus添加到右键快捷菜单(倒数第二项)

· 如果去掉备份文件

工具--参数设置--文件--去掉保存时创建备份文件前面的对勾(第一项)

13:代码书写格式

· 1,大括号要对齐,并且成对写

· 2,左大括号前面有空格

· 3,遇到左大括号要缩进,Tab

· 4,程序块之间加空行让程序看起来清晰

· 5,并排语句之间加空格,例如for语句

· 6,运算符两侧加空格

14:关键字

· Java语言赋予了特殊含义的单词。

· 特点:关键字中所有字母都为小写。

· goto和const虽然从未使用,但也作为 Java 关键字保留,记住保留字也是不能当作标识符.

· java中是没有sizeof这个关键字的

15:标识符

· Java 语言中,对各种变量、方法和类等要素命名时使用的字符序列称为标识符。

简单记,就是起名字。

· 命名规则

26个英文字母大小写,数字0-9,_,$等组成。

不能以数字开头。

不能与java的关键字重名。

· 命名规范见名知意,驼峰命名。

所有单词小写。

§ 看成是一个文件夹。

§ www.itcast.cn cn.itcast.包的作用 则该文件中所有的类位于cn/itcast/这个路径下

§ www.baidu.com com/baidu/包的作用(如果我们打算去哪个公司面试的话,可以先把公司的网站了解一下,然后把你的项目包名称改成公司网站的名称,这样会增加你面试的机会)

类和接口

§ 如果是由一个单词组成,那么单词首字母大写。举例:Demo,Student。

§ 如果是由多个单词组成,那么每个单词的首字母大写。举例:StudentDemo。

变量与方法

§ 如果是由一个单词组成,那么单词首字母小写。举例:main,show。getMax()

§ 如果是由多个单词组成,第一个单词首字母小写,其后每个单词的首字母大写。举例:showName。getMax();

常量

§ 如果是一个单词组成,那么所有单词全部大写。举例:MAX。

§ 如果由多个单词组成,每个单词大写,并且以下划线相连接。举例:STUDENTMAXAGE。

16:注释

· 注解说明代码的,用于给人看的。

· 注释的分类

单行注释 //

多行注释 /* */

文档注释 /** */

· 注释的用途

注解说明文字。

用于调试代码。

17:常量

· 整数常量。所有整数

· 小数常量。所有小数

· 布尔型常量。较为特殊,只有两个数值。true false

· 字符常量。将一个数字字母或者符号用单引号('')标识.

· 字符串常量。将一个或者多个字符用双引号标识。

· null常量。只有一个数值就是:null.


================================================================================================================================

1:进制转换

· 其他进制到十进制

其他进制包含二进制,八进制,十六进制

§ 转换规则

§ 先把数据的每一位上的系数乘以对应基数的次幂(低位从从零开始),然后相加即可

· 

十进制到其他进制

· 

规则:除基取余,直到商为0,最后将余数反转

§ 十进制到二进制

§ 2取余,直到商为0,最后将余数反转

§ 十进制13对应的二进制数据是1101

§ 二进制到十进制的技巧(8421码)

§ 十进制到八进制

§ 8取余,直到商为0,最后将余数反转

§ 十进制13对应的把进制数据是15

§ 十进制--二进制--八进制

§ 首先把十进制转成二进制

§ 其次把二进制数据每三位组合。左边不够三位用0补位

§ 然后把每个组合计算成对应的十进制数据

§ 最后从左到右把数据相连接即可得到八进制

§ 

十进制到十六进制

§ 

§ 16取余,直到商为0,最后将余数反转

§ 

十进制13对应的把进制数据是D

§ 

§ 

十进制--二进制--十六进制

§ 

§ 首先把十进制转成二进制

§ 其次把二进制数据每四位组合。左边不够四位用0补位

§ 然后把每个组合计算成对应的十进制数据

§ 最后从左到右把数据相连接即可得到十六进制

· 快速转换法

2:计算机中有符号数据表示法

· 原码

· 反码

· 补码

3:变量

· 在程序的运行过程中,其值在指定范围内变化的值

· 是内存中一个区域,用于存储数据

· 变量的定义格式:

A:数据类型 变量名 = 初始化值;

· 变量在使用的时候

A:第一种,在声明的时候,就初始化值

§ 数据类型变量名 = 初始化值;

§ 举例:byte b = 100; System.out.println(b);

B:第二种 在使用前,赋值

§ 声明

§ 赋值

§ 使用

§ 举例 byte b2;b2 = 100; System.out.println(b2);

4:数据类型

· java语言分为两种数据类型

A:基本数据类型

B:引用数据类型(类,接口,数组)

· 基本数据类型

A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同

B:4类8种

§ 整数

§ byte 占1个字节//8个开关,8个二进制位 1byte = 8bit

§ short 占2个字节

§ int 占4个字节0

§ long 占8个字节 其后加L或l标识

§ 浮点数

§ float 占4个字节 其后加F或f标识3.3f 2^63

§ 32个二进制位

§ 1位符号位

§ 8位代表指数位

§ 23位尾数位0.9999999

§ 0000000000 - 111111111 0 - 255

§ IEEE 754 0 255 特殊的值

§ 1 - 254 - 127

§ 1 - 127 = -126

§ 254 - 127 = 127

§ double 占8个字节

§ 字符

§ char 占2个字节 0 - 65535

§ 布尔型

§ boolean This data type represents one bit of information,

§ but its "size" isn't something that's precisely defined.

§ 这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.

§ true,false

· C:默认情况下:

整数是int类型

浮点数是double类型

5:数据类型转换

· 

数据参与运算

· 

A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则

§ 容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:

§ byte,short,char->int->long->float->double

§ byte 和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型

§ 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。

§ 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

B:强制转换符

§ 格式:(数据类型)(要被转换的数据) byte b = (byte)(300);

C:字符型参与运算

§ 首先会去找对应字符的unicode码值。然后运算。

§ char 类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量

D:布尔型参与运算

§ 不能参与运算

E:字符串参与运算

§ 它是和参与运算的数据相连接组成了一个新的字符串。

思考:哪句是编译失败的呢?为什么呢?

byte b1=3,b2=4,b;
b=b1+b2;

(1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算

(2)b1和b2是两个变量值,jvm无法判断里面值的大小

b=3+4;

java 编译器有常量优化机制,在编译的时候已经将3+4的结果赋值给b了

6:算术运算符+,-,*,/,%,++,--

· 

A:%

· 

当左边的绝对值小于右边:结果是左边

当左边的绝对值等于右边或者是右边倍数的时候:结果是0

当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号

取余的正负号取决于左边,右边忽略不记

用途:任意正整数%2 结果是要么0,要么1。用于切换条件

· 

B:++,--

· 

递增,递减运算符。就是加1或者减1

单独存在,放在操作数的前面或者后面,结果一样

参与运算时:

§ 放在变量的前面,先自身加或者减1,然后再参与运算

§ 放在变量的后面,先参与运算,然后再自身加或者减1

· 

C:+

· 

作为数据的符号(正号)

做加法运算

字符串连接符"5 + 5 =" + (5 + 5);

7:赋值运算符=,+=,*=

· 赋值运算符

A:=:赋值运算符 把右边的值赋给左边

    举例:int x = 3; 把3赋给int类型变量x

    int a,b,c;

    a = b = c = 5;

· B:+=:加赋值运算符 把左边和右边的和赋给左边

举例:int x = 3; x+=2;等同于 x = x + 2;

面试题

· 

byte b = 5;

b = b + 2;

b += 2; b = (byte)(b + 2);

System.out.println(b);会不会报错?

+=运算符在给b赋值时,自动完成了强转操作。

· 

8:比较运算符==,!=,>,<,>=,<=

· 比较运算符的结果都是boolean型,也就是要么是true,要么是false。

9:逻辑运算符

· 

逻辑与运算符 &

· 

第一个条件    第二个条件     结果

true          true           true

false         true           false

true          false          false

false         false          false

 

简单记:左右两边同时为true,结果为true。

· 

· 

逻辑或运算符 |

· 

第一个条件    第二个条件     结果

true          true           true

false         true           true

true          false          true

false         false          false

 

简单记:左右两边只要有一个结果是true,结果为true。

· 

· 

逻辑异或运算符 ^

· 

第一个条件    第二个条件     结果

true          true           false

false         true           true

true          false          true

false         false          false

 

简单记:左右两边相同,结果为false。

· 

· 

逻辑非运算符 !

· 

!true  false

!false true

    !!true true

· 

· 

短路与:

· 

&:左边无论什么结果,右边都执行。

&&:左边为false,右边不执行,结果为false。

 

int x = 10;

x > 11 && x < 15

· 

· 

短路或:

· 

|:左边无论什么结果,右边都执行。

||:左边为true,右边不执行,结果为true。


=============================================================================================================================

1:位运算符

· 位运算符2<<3 2 * 8 == 2 * 2^3

<<一个整数向左移动几位就乘以2的几次幂

>>一个整数向右移动几位就除以2的几次幂,高位是0就补0,高位是1就补1

>>>无符号右移无论最高位的符号位是0还是1,用无符号右移后高位符号位都是补0

2:三元运算符

· 格式 (条件表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

条件运算符运算完之后一定有一个结果

int x,y,z;

x = 5;

y = 10;

z = x > y ? x : y;

· 表达式

· 运算符的优先级。

3:程序运行流程&顺序结构

· 顺序结构

· 判断结构

· 选择结构

· 循环结构

4:if语句

· 三种格式:

· 

第一种:

· 

if(条件表达式){

    执行语句;

}

System.out.println();

 

举例:

int age = 17;

if (age >= 18)

   System.out.println("可以浏览本网站");

 

System.out.println("完了");

· 

· 

第二种:

· 

if(条件表达式){  

    执行语句;       

}else{          

    执行语句;   

}

 

举例:

int x = 1;

if (x == 1){

    System.out.println("男厕所欢迎您");

}else {

    System.out.println("女厕所欢迎您");

}

 

if else 与三元运算符的区别

· 

· 

第三种:

· 

if(条件表达式){

       执行语句;

}else if (条件表达式){

      执行语句;

}else{

      执行语句;

}

 

举例:

int x = 1;

if (x == 1){

    System.out.println("男厕所欢迎您");

}else if(x == 0){

    System.out.println("女厕所欢迎您");

}else {

    System.out.println("无法识别您的性别");

}

· 

5:if语句嵌套

    int x = 2, y = 1;

    if(x==1){

        if(y==1){

            System.out.println("a");

        }else{

            System.out.println("b");

        }

    }else{

        if(y==1){

            System.out.println("c");

        }else{

            System.out.println("d");

        }

    }

6:switch

· 

格式:

· 

int x = 10;

switch (表达式){//byte,short,int,char,String 枚举

 

case 表达式里对应的值:

    执行语句;

break;

case 表达式里对应的值:

    执行语句;

break;

......

default:

    执行语句;

break;//最后一句的break可写可不写,因为程序已经执行到了末尾

}

· 

· 

案例:

· 

String name = "张三";

String gender = "先生";

switch (gender){

case "先生":

    System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");

break;

case "女士":

    System.out.println(name + "是一位" + gender + "逛街购物美容");

break;

default:

    System.out.println(name + "是一位" + gender + "打雌性激素保持美貌容颜");

 

}

· 

· switch结束的两种情况

1,当程序执行过程中遇到了break

2,当程序执行到了末尾处

· switch语句需要注意的两个细节

1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里的执行语句,不会再对case值进行判断,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break

    例如:我们做一年有四季的例子:

    int month = 4;

    switch (month){

    case 3:

    case 4:

    case 5:

        System.out.println(month+"月是春季");

    break;

    case 6:

    case 7:

    case 8:

        System.out.println(month+"月是夏季");

    break;

    case 9:

    case 10:

    case 11:

        System.out.println(month+"月是秋季");

    break;

    case 12:

    case 1:

    case 2:

        System.out.println(month+"月是冬季");

    break;

    default:

        System.out.println(month+"月没有这样的月份")

 

    }//上述例子就是三个case里面的值输出都一样的,所以我们省略了break;这样会少写几行代码,提高效率

 

* 2,当我们把 default 不是写在最后,default 里面还没有写break的是时候,switch里的表达式与各个case里的值都不匹配的时候,上面两个条件同时满足的话,程序在default里执行完了还会再去执行case里的语句

    例如:

    int x = 3;

    switch (x){

 

    case 4:

        System.out.print("a");

    break;

    default:

        System.out.print("b");//当程序执行到了default但是他没有break,下面的case值不再判断,程序继续执行

    case 5:

        System.out.print("c");

    case 6:

        System.out.print("d");

    break;//遇到break,程序跳出

    case 7:

        System.out.print("e");

    }

7:while

· 

while循环

· 

格式:

while (条件表达式){

    循环体;

}

 

例如:

int x = 3;

while (x<6){

    System.out.println("x="+x);//循环体

    x++;//用x自增来控制循环次数

}

· 

· 

do while 循环

· 

格式:

do{

    循环体;

    控制循环次数

}

while (条件表达式);

例如:

int x = 3;

do{

    System.out.println("x="+x);//循环体

    x++;//用x自增来控制循环次数

}

while (x<6);

· 

· while和do while的区别:

dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断

while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.


===========================================================================================================================


1:for循环语句

· 

格式:

· 

for(初始化表达式1;循环条件表达式2;循环后的操作表达式4){

    执行语句;(循环体)3

}

· 

· 

例如:

· 

for(int x=0; x< 3;x++ ){

    System.out.println("x="+x);

}

· 

2:循环嵌套及案例

· 格式:

· 

for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环

    执行语句;(循环体)

    //下面是内循环

    for(初始化表达式;循环条件表达式;循环后的操作表达式){

        执行语句;(循环体)

    }

}

· 

· 举例:

· 

for (int x=1;x < 6;x++ ){

    for(int y=1; y<6; y++){

        System.out.print("*");

    }

    System.out.println();

}

· 

· 练习:打印99乘法表

3:流程控制continue和break

· 这两个语句离开应用范围,存在是没有意义的。

· 这两个语句单独存在下面都不可以有语句,因为执行不到。

· continue语句是结束本次循环继续下次循环。

· 标号的出现,可以让这两个语句作用于指定的范围。

4:函数的概述及格式

· 函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。

· 函数的格式

· 

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) {

    执行语句;

    return 返回值;

}

public static int add(int a,int b){}

A:修饰符 后面会重点讲。public static

B:返回值类型 这个特定的功能完成后,需要返回一个结果。这个地方就是返回结果的类型。

C:函数名 为了方便使用这个函数,给它起个名字。这个名字要符合标识符命名规则。

D:参数类型 形式参数的数据类型

    **:形式参数 自定义的接收方

    **:实际参数 发出方add(3,5)

E:执行语句 那么这个语句是由多条语句组成。

F:return 这个功能执行完以后,需要有一个返回值,那么这个值有关键字return带回。

· 

5:函数的使用及注意事项

· A:一般函数只有被调用后,才执行。

· B:void 表示没有返回。在这个函数的结尾可以不写return。其实jvm会自动的结尾处加上return;

· C:函数中不能定义函数

· D:如果定义自己的函数 两个明确

明确该功能的结果 其实就是该功能的返回类型。

明确该功能的参数 其实就是明确该功能中是否需要未知内容(形式参数)参与运算。明确未知内容的类型和个数。

6:函数的重载

· A:函数名相同,参数列表不同。

参数类型不同。int add(int i)void add(double d)

参数个数不同。add(int a,int b);add(int a,int b,int c)

参数顺序不同 print(String name, int age) //参数顺序不同的重载是可以存在的,但是没有什么实际意义

· B:特点:与返回值类型无关,只看参数列表。

· C:好处:便于阅读,优化程序设计。

7:函数的练习

· 1,for的嵌套循环打印矩形用函数封装起来,根据所传参数打印行和列

· 2,判断两个(int型)整数是否相同

· 3,比较两个(int型)整数哪个大?

· 4,定义一个功能获取三个(int型)整数中的最大数

· 5,定义一个方法求一个数的十六进制表现形式

8:Scanner类的概述和使用

· 使用前要导包 * import java.util.Scanner;

· 使用时要创建对象

· 

Scanner sc = new Scanner(System.in);

int x = sc.nextInt();  

=============================================================================================================================

1,数组概述及格式

· 数组:同一种类型数据的集合。其实数组就是一个容器。

只要是容器,就得重点掌握。

· 数组的好处

可以自动给数组中的元素从0开始编号,方便操作这些元素。

· 数组的定义格式

· 

A:当不明确数组中的元素时,动态初始化

    举例 :

    int[] arr = new int[3];

    arr[0] = 3;

B:当明确数组中的元素时,静态初始化

    举例 :

    int[] arr = new int[]{1,2,3,4,5};

    int[] arr = {1,2,3,4,5};

· 

· 什么时候使用数组?

当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。

数组的内存图

· A:栈

存储的是局部变量(在函数中定义的变量)。

变量被使用完后,立即自动释放。

· B:堆

存储的是实体(数组和对象)。

实体:new出来的东西,可以存放很多数据的东西。

堆内存数据的特点

§ 每个实体都有内存地址

§ 堆内存中的变量都有默认初始化值

§ int --> 0

§ double --> 0.0

§ boolean --> false

§ char --> '\u0000' 空字符,unicode编码。

§ 当实体不在被使用的时候,会在jvm空闲的时候,通过java垃圾回收机制使其自动释放。

· C:方法区 后面讲。(static)

· D:本地方法区 调用是Windows系统底层资源,我们不用考虑。

· E:寄存器 和CPU相关。我们不用考虑。

数组的常见问题

· A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。

ArrayIndexOutOfBoundsException

    举例

    int[] arr = new int[3];

    System.out.println(arr[3]);

· B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。

NullPointerException

    举例

    int[] arr = new int[3];

    arr = null;

    System.out.println(arr[1]);

数组的操作

· 数组遍历

· 数组获取最值

· 基本查找

· 数组的参数传递

数组的练习

· 数组反转

数组的应用

· 查表法(星期的示例)

二维数组概述和定义

· 格式1:int[][] arr = new int[3][2];

A:定义了名称为arr的二维数组

B:二维数组中有3个一维数组

C:每一个一维数组中有2个元素

D:一维数组的名称分别为arr[0], arr[1], arr[2]

§ arr:二维数组名

§ arr[1]:二维数组中的第二个一维数组名

§ arr[1][1]:二维数组中的第二个数组的第二个元素

E:给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

· 格式2:int[][] arr = new int[3][];

A: 二维数组中有3个一维数组

B: 每个一维数组都是默认初始化值null

C: 可以对这个三个一维数组分别进行初始化

§ arr[0] = new int[3];

§ arr[1] = new int[5];

§ arr[2] = new int[7];

· 格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};arr[2].length

A:二维数组有3个一维数组。

B:

§ 第一个一维数组有3个元素

§ 第二个一维数组有2个元素

§ 第三个一维数组有4个元素

二维数组的应用

· 二维数组的遍历

· 

int[][] arr2 = new int[2][3];

public static void printArray2(int[][] arr2){

    for(int i=0; i<arr2.length; i++){

        for(int j=0; j<arr2[i].length; j++){

            System.out.print(arr2[i][j]+" ");

        }

        System.out.println();

    }

}

· 

· 二维数组的应用

· 

求一年的销售总额。

public static void printArray2(int[][] arr2){

    int sum = 0;

    for(int i=0; i<arr2.length; i++){

        for(int j=0; j<arr2[i].length; j++){

            sum = sum + arr[i][j];

        }

        System.out.println("sum =" + sum);

    }

}

· 

一个综合小案例:数据加密


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值