Java基础1
来源:互联网 发布:windows api编程 编辑:程序博客网 时间:2024/09/21 06:33
1:计算机基础知识概述
· 计算机
o 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。
· 计算机硬件
o cpu
o 硬盘
o 内存
o ...
·
软件开发
·
o
什么是软件?
o
§ 软件是一系列按照特定顺序组织的计算机数据和指令的集合。程序设计的最终结果是软件。
§ 系统软件: 系统软件为计算机使用提供最基本的功能. 例如: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS
§ 应用软件: 系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 例如: Word, Excel, PPT, QQ, FeiQ, 极域, Editplus Eclipse
o
什么是开发?
o
§ 制作软件(我们就是干这个活)
·
人机交互
·
o 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。
o 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
·
键盘认识
·
o 1,Tab (table)缩进
o 2,shift 转换键
o 3,Ctrl (control)控制
o 4,Windows
o 5,Alt(Alternative)交换,替换
o 6,空格
o 7,Enter 回车键
o 8,上下左右键
o 9,PrtSc(PrintScreen)屏幕截图
·
快捷键和功能键
·
o 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键打开“系统属性”对话框
o 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:计算机语言
· 语言:是人与人之间用于沟通的一种方式。
o 例如:中国人与中国人用中文沟通。而中国人要和美国人交流,就要学习英语。而且语言不通有时候也会闹出一些笑话。
· 计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语。
o 计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中的一种:Java语言。我们可以看一下老师在网上找的计算机语言排行榜
· 计算机语言分类
o 机器语言:机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。
o 汇编语言:汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。
o 高级语言:
使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。
4:Java语言概述和技术体系架构
· Java是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
· Java的起源:一个Green项目
o 1995年,Oak正式更名为java
o 1996年,Sun公司发布JDK1.0
o 1998年,发布了1.2,也叫java2
o 1999年,Sun公司把java技术分成了J2SE,J2ME,J2EE
o 2000年,JDK1.3,1.4发布
o 2005年,Java的各个版本取消2
· Java语言的三种技术架构
o J2SEJava 2 Platform Standard Edition)标准版
§ 是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。
o J2EE(Java 2 Platform Enterprise Edition)企业版
§ 是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet Jsp等,主要针对于Web应用程序开发。
o J2ME(Java 2 Platform Micro Edition)小型版
§ 是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
o Java5.0版本后,更名为 JAVAEE JAVASE JAVAME
5:Java语言特性(跨平台)
· 高级语言的工作原理
o windows下的c语言编程过程
§ c源程序(扩展名.c)-------->windows可执行性文件-------->windows操作系统
o 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官方网址:
o www.oracle.com
o java.sun.com
· 安装jdk
o 傻瓜式安装,下一步即可。建议:安装路径不要有中文或者特殊符号如空格等。当提示安装JRE时,可以选择不安装。
8:开发第一个Java应用程序
class Demo{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
9:初学者常见问题讲解
· 提示1: 找不到文件
o 原因1:文件名字写错
o 原因2:扩展名隐藏
· 提示 2:找不到main函数
o 原因1:没写main函数,编译可以通过,运行不了
o 原因2:main函数写错
· 提示3:某软件包不存在
o 原因:可能是该大写的小写了,爱马虎的童鞋要注意了
· 温馨提示:java中可不可以用中文定义类名 ?
10:环境变量Path的配置,notepad命令
· 我的电脑--属性--高级--环境变量
· 编辑path环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。
· 打开DOS命令行,任意目录下敲入javac。
· 如果出现javac 的参数信息,配置成功。
· 配置path的好处?这种配置方式,一劳永逸
11:环境变量CLASSPATH的配置
· JVM查找类文件的顺序:
o 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。
o 如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件
§ 值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。
§ 值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。
· 建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示。
12:editplus配置
· 如何把其添加至右键菜单
o 工具--参数设置--常规--把Editplus添加到右键快捷菜单(倒数第二项)
· 如果去掉备份文件
o 工具--参数设置--文件--去掉保存时创建备份文件前面的对勾(第一项)
13:代码书写格式
· 1,大括号要对齐,并且成对写
· 2,左大括号前面有空格
· 3,遇到左大括号要缩进,Tab
· 4,程序块之间加空行让程序看起来清晰
· 5,并排语句之间加空格,例如for语句
· 6,运算符两侧加空格
14:关键字
· 被Java语言赋予了特殊含义的单词。
· 特点:关键字中所有字母都为小写。
· goto和const虽然从未使用,但也作为 Java 关键字保留,记住保留字也是不能当作标识符.
· java中是没有sizeof这个关键字的
15:标识符
· Java 语言中,对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
o 简单记,就是起名字。
· 命名规则
o 由26个英文字母大小写,数字0-9,_,$等组成。
o 不能以数字开头。
o 不能与java的关键字重名。
· 命名规范见名知意,驼峰命名。
o 包所有单词小写。
§ 看成是一个文件夹。
§ www.itcast.cn cn.itcast.包的作用 则该文件中所有的类位于cn/itcast/这个路径下
§ www.baidu.com com/baidu/包的作用(如果我们打算去哪个公司面试的话,可以先把公司的网站了解一下,然后把你的项目包名称改成公司网站的名称,这样会增加你面试的机会)
o 类和接口
§ 如果是由一个单词组成,那么单词首字母大写。举例:Demo,Student。
§ 如果是由多个单词组成,那么每个单词的首字母大写。举例:StudentDemo。
o 变量与方法
§ 如果是由一个单词组成,那么单词首字母小写。举例:main,show。getMax()
§ 如果是由多个单词组成,第一个单词首字母小写,其后每个单词的首字母大写。举例:showName。getMax();
o 常量
§ 如果是一个单词组成,那么所有单词全部大写。举例:MAX。
§ 如果由多个单词组成,每个单词大写,并且以下划线相连接。举例:STUDENTMAXAGE。
16:注释
· 注解说明代码的,用于给人看的。
· 注释的分类
o 单行注释 //
o 多行注释 /* */
o 文档注释 /** */
· 注释的用途
o 注解说明文字。
o 用于调试代码。
17:常量
· 整数常量。所有整数
· 小数常量。所有小数
· 布尔型常量。较为特殊,只有两个数值。true false
· 字符常量。将一个数字字母或者符号用单引号('')标识.
· 字符串常量。将一个或者多个字符用双引号标识。
· null常量。只有一个数值就是:null.
================================================================================================================================
1:进制转换
· 其他进制到十进制
o 其他进制包含二进制,八进制,十六进制
§ 转换规则
§ 先把数据的每一位上的系数乘以对应基数的次幂(低位从从零开始),然后相加即可
·
十进制到其他进制
·
o
规则:除基取余,直到商为0,最后将余数反转
o
§ 十进制到二进制
§ 除2取余,直到商为0,最后将余数反转
§ 十进制13对应的二进制数据是1101
§ 二进制到十进制的技巧(8421码)
§ 十进制到八进制
§ 除8取余,直到商为0,最后将余数反转
§ 十进制13对应的把进制数据是15
§ 十进制--二进制--八进制
§ 首先把十进制转成二进制
§ 其次把二进制数据每三位组合。左边不够三位用0补位
§ 然后把每个组合计算成对应的十进制数据
§ 最后从左到右把数据相连接即可得到八进制
§
十进制到十六进制
§
§ 除16取余,直到商为0,最后将余数反转
§
十进制13对应的把进制数据是D
§
§
十进制--二进制--十六进制
§
§ 首先把十进制转成二进制
§ 其次把二进制数据每四位组合。左边不够四位用0补位
§ 然后把每个组合计算成对应的十进制数据
§ 最后从左到右把数据相连接即可得到十六进制
· 快速转换法
2:计算机中有符号数据表示法
· 原码
· 反码
· 补码
3:变量
· 在程序的运行过程中,其值在指定范围内变化的值
· 是内存中一个区域,用于存储数据
· 变量的定义格式:
o A:数据类型 变量名 = 初始化值;
· 变量在使用的时候
o A:第一种,在声明的时候,就初始化值
§ 数据类型变量名 = 初始化值;
§ 举例:byte b = 100; System.out.println(b);
o B:第二种 在使用前,赋值
§ 声明
§ 赋值
§ 使用
§ 举例 byte b2;b2 = 100; System.out.println(b2);
4:数据类型
· java语言分为两种数据类型
o A:基本数据类型
o B:引用数据类型(类,接口,数组)
· 基本数据类型
o A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
o 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:默认情况下:
o 整数是int类型
o 浮点数是double类型
5:数据类型转换
·
数据参与运算
·
o A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
§ 容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
§ byte,short,char->int->long->float->double
§ byte 和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型
§ 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
§ 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
o B:强制转换符
§ 格式:(数据类型)(要被转换的数据) byte b = (byte)(300);
o C:字符型参与运算
§ 首先会去找对应字符的unicode码值。然后运算。
§ char 类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量
o D:布尔型参与运算
§ 不能参与运算
o
E:字符串参与运算
o
§ 它是和参与运算的数据相连接组成了一个新的字符串。
o
思考:哪句是编译失败的呢?为什么呢?
o
byte b1=3,b2=4,b;
b=b1+b2;
o (1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
o (2)b1和b2是两个变量值,jvm无法判断里面值的大小
b=3+4;
o java 编译器有常量优化机制,在编译的时候已经将3+4的结果赋值给b了
6:算术运算符+,-,*,/,%,++,--
·
A:%
·
o 当左边的绝对值小于右边:结果是左边
o 当左边的绝对值等于右边或者是右边倍数的时候:结果是0
o 当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
o 取余的正负号取决于左边,右边忽略不记
o 用途:任意正整数%2 结果是要么0,要么1。用于切换条件
·
B:++,--
·
o 递增,递减运算符。就是加1或者减1
o 单独存在,放在操作数的前面或者后面,结果一样
o 参与运算时:
§ 放在变量的前面,先自身加或者减1,然后再参与运算
§ 放在变量的后面,先参与运算,然后再自身加或者减1
·
C:+
·
o 作为数据的符号(正号)
o 做加法运算
o 字符串连接符"5 + 5 =" + (5 + 5);
7:赋值运算符=,+=,*=
· 赋值运算符
o A:=:赋值运算符 把右边的值赋给左边
举例:int x = 3; 把3赋给int类型变量x
int a,b,c;
a = b = c = 5;
· B:+=:加赋值运算符 把左边和右边的和赋给左边
o 举例:int x = 3; x+=2;等同于 x = x + 2;
o 面试题
·
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
o <<一个整数向左移动几位就乘以2的几次幂
o >>一个整数向右移动几位就除以2的几次幂,高位是0就补0,高位是1就补1
o >>>无符号右移无论最高位的符号位是0还是1,用无符号右移后高位符号位都是补0
2:三元运算符
· 格式:(条件表达式)?表达式1:表达式2;
o 如果条件为true,运算后的结果是表达式1;
o 如果条件为false,运算后的结果是表达式2;
o 条件运算符运算完之后一定有一个结果
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结束的两种情况
o 1,当程序执行过程中遇到了break
o 2,当程序执行到了末尾处
· switch语句需要注意的两个细节
o 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的区别:
o dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断
o 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:如果定义自己的函数 两个明确
o 明确该功能的结果其实就是该功能的返回类型。
o 明确该功能的参数其实就是明确该功能中是否需要未知内容(形式参数)参与运算。明确未知内容的类型和个数。
6:函数的重载
· A:函数名相同,参数列表不同。
o 参数类型不同。int add(int i)void add(double d)
o 参数个数不同。add(int a,int b);add(int a,int b,int c)
o 参数顺序不同 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,数组概述及格式
· 数组:同一种类型数据的集合。其实数组就是一个容器。
o 只要是容器,就得重点掌握。
· 数组的好处
o 可以自动给数组中的元素从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};
·
· 什么时候使用数组?
o 当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。
数组的内存图
· A:栈
o 存储的是局部变量(在函数中定义的变量)。
o 变量被使用完后,立即自动释放。
· B:堆
o 存储的是实体(数组和对象)。
o 实体:new出来的东西,可以存放很多数据的东西。
o 堆内存数据的特点
§ 每个实体都有内存地址
§ 堆内存中的变量都有默认初始化值
§ int --> 0
§ double --> 0.0
§ boolean --> false
§ char --> '\u0000' 空字符,unicode编码。
§ 当实体不在被使用的时候,会在jvm空闲的时候,通过java垃圾回收机制使其自动释放。
· C:方法区 后面讲。(static)
· D:本地方法区 调用是Windows系统底层资源,我们不用考虑。
· E:寄存器 和CPU相关。我们不用考虑。
数组的常见问题
· A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。
o ArrayIndexOutOfBoundsException
举例
int[] arr = new int[3];
System.out.println(arr[3]);
· B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。
o NullPointerException
举例
int[] arr = new int[3];
arr = null;
System.out.println(arr[1]);
数组的操作
· 数组遍历
· 数组获取最值
· 基本查找
· 数组的参数传递
数组的练习
· 数组反转
数组的应用
· 查表法(星期的示例)
二维数组概述和定义
· 格式1:int[][] arr = new int[3][2];
o A:定义了名称为arr的二维数组
o B:二维数组中有3个一维数组
o C:每一个一维数组中有2个元素
o D:一维数组的名称分别为arr[0], arr[1], arr[2]
§ arr:二维数组名
§ arr[1]:二维数组中的第二个一维数组名
§ arr[1][1]:二维数组中的第二个数组的第二个元素
o E:给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
· 格式2:int[][] arr = new int[3][];
o A: 二维数组中有3个一维数组
o B: 每个一维数组都是默认初始化值null
o 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
o A:二维数组有3个一维数组。
o 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);
}
}
·
一个综合小案例:数据加密
- Java基础--基础语法1
- Java基础-1、基础语法
- 1-1 java基础
- java基础(1)
- Java基础学习1
- JAVA基础1
- java基础(1)
- Java 基础题1
- java基础1
- Java线程基础1
- java基础1、2
- java基础整理1
- java基础加强1
- java基础1
- Java基础1 概述
- java基础加强1
- java基础笔记1
- java 基础1
- 找出下一个比它大而且值为1的位元数与之相同的数字
- 文章标题
- unix线程同步
- 使用C#创建快捷方式
- XUtils之HttpUtils
- Java基础1
- Fleury算法求欧拉路径
- Android 自定义控件之圆点指示器 View (IndicateDotView)
- 关于int *a; int &a; int & *a; int * &a
- python 下载csv文件保存到 redis
- 下载和安装R、RStudio !~~~
- unix进程控制
- JavaSE 之 ----- Java线程池的解析
- 选数 codevs1008