1.初识Java
起源
C语言的产生标志着现代计算机编程语言的开始
代码通常是指一个程序或者程序的一部分,对于人类来说是可读的。计算机可读的信息通常被组织为字节,字节码是对计算机可读的程序。
发展
Java三个版本:Java SE;Java EE;Java ME
API:应用程序编程接口
上机实训
环境变量的配置:计算机——属性——高级系统设置——高级——环境变量
Java运行环境三大任务:类加载、字节码校验、解释执行
总结
Java起源
Java平台分类
Java SE:适用于普通PC及笔记本电脑。为其他Java程序的开发和运行提供技术支持
Java EE:适用于服务器,重点定位与企业级别的分布式软件系统
Java ME:定位于嵌入式系统的开发和运行。如手机、家电等
Java的概念
特点:面向对象、类是基本构造单元、所有的语句都出现在一个类中。
面向对象
编写Java程序就是编写类,一个 . Java 文件中只能有一个public类
. Java 文件的文件名必须是在文件中声明的public类的名称
main( )方法的签名为: public static void main(String[] args)
技术特点
语言特征:简单,面向对象,可移植性,多线程,动态
平台是指程序运行的硬件或者软件环境
Java平台是一个运行在其它基于硬件的平台之上的纯软件平台
Java平台的两个组件:JVM 和Java API
Java程序源代码文件格式为“.class”。Java文件名必须与类名相同,区分大小写
java中函数成为方法
类是Java程序的基本构造单元,Java程序中所有的语句出现在一个类中
面向对象编程思想中包含两个基本概念:类和对象,其中对象由属性和行为组成。
类:抽象出对象的属性和行为,按此标准将对象分类,类是一类事物的统称。类是对象的抽象,生成对象的模板。
翻译的方法有两种:编译和解释。编译型语言以后不用重新编译,不能实现跨平台。解释性语言在运行的时候才翻译,效率低,可跨平台。
Java为一半编译半解释型语言
Java源程序文件被编译后生成Java字节码文件,字节码文件又称Java类文件
Java虚拟机本质上是一个软件。位于JDK或jre目录下的bin目录下
JavaAPI中是一些已经完成的软件组件。Java API与JVM一起将我们编写的Java程序与下层硬件隔离
Java程序执行机制(图待补)
加载类库顺序:先加载启动类库,再加载扩展类库,最后加载自定义类库
字节码加载器对加载的字节码进行校验
JIT,即时编译器:在每段代码执行前先将其进行编译为本地机器码
main方法是Java.exe进程的入口点
public 访问修饰符
2.Java基础语法
关键字
关键字
const 和 goto 不能在Java中使用
保留字
true、false、null
自定义标识符
标识符:Java代码中自己选用的单词
不能为关键字
由字母、数字、下划线或$组成
数字不能开头
区别大小写,长度无限制
数据类型、变量和常量
数据类型(11种)
基本类型
整型
byte(一个字节)=8位
short(2个字节)
int(4个字节)(数字默认类型)
long(8个字节)
浮点型
float(4字节)
double(8字节)
字符型
char(2字节)
布尔型
boolean(true、false、true/false)
引用类型
类
class
接口
子主题 1
数组
变量的定义:变量类型 变量名;
变量的赋值:变量名 = 值; --第一次赋值被成为初始化
注意:变量如果没有赋值,直接使用是会报错的。
常量的定义:final数据类型 常量名 = 值; --常量名全大写
Char可以直接存放字符型数据,也可以存放数字(不是真正的存放了数,而是赋值为在ASCNII表中查找到的对应字符)
运算符和表达式
如果在字符串中使用"",则需要转义符\ 将没有字符串意义的"这样书写\"
转义符的作用:将某个符号转换成其它意思例:",转义后为\" 变成了没有字符串含义的"
Boolean类型在其他方法无能为力的时候,往往能够解决问题。
三目运算符:boolean表达式?(a):(b);
区别--和++的四种情况
移位运算符>> << >>>
>>右移将值转换为二进制再整体往右移两位,注意,移出去的不要了(正整数的做法)快捷算法例:10>>3 即为10除以2^3
负数也相同,区别在于最小的整数值,例:-10>>3表示-10/2^3 理论上得-1.几,保存离它最小的整数:-2
<<左移将值转换为二进制再整体往左移两位,不够的用0来填充.例:正整数如下:intnum = 3<<4;
左移和右移在正整数的情况下,左移是乘,右移是除。负数和正整数一样。小数不考虑。
>>>无符号右移:正整数和>>的运算方式是一致的。无符号右移的负整数不考虑。
^异或,将两边的数值转换为二进制,然后对比,如果都相同,则记0,不同记1
短路符号有:&&,|| 分别表示短路和,短路或。这种符号如果第一个逻辑结果能够决定最终结果,则不会执行第二个逻辑
字符串的拼接:“+”在字符串中为拼接--但是注意两边只有一个为字符串的时候
System.out.println(11+2+"呵呵");输出13呵呵
System.out.println("呵呵"+11+2);输出呵呵112
上机实训
Java中的输入
Scanner sc = new Scanner(System.in);//这是输入前的准备
方法的重载与调用
String name = sc.next();//接收一个字符串
doublechengJi = sc.nextDouble();//接收一个double值
int age = sc.nextInt();//接收一个int值
char可以直接存放字符型数据,但也可以存放数值(注意:不是真的存了数)而是在ASC表中查处对应的字符后,再赋值。例如: chara = 'a'; charb = 66;得到B。后面的写法不行char c = '12';
Java注释
单行注释 //
多行注释 /* */
javadoc文档注释 /** */
3.程序流程控制
流程控制
公用类:public class{}
改变程序流程的三种方法
调用方法
2种 选择
if/else语句
switch语句
三目运算符可看作是if/else的一个简写版本
3个 循环
for循环
while循环
do/while循环
所有的控制结构都包含了某种类型的boolean判断
布尔逻辑
在组合boolean表达式时,有四种逻辑
和:全真为真
或:有真为真
非:真为假,假为真
异或:相同为假,不同为真
逻辑非运算符!可以放在任何布尔表达式或变量的开头
跳转语句
循环语句
while
do/while
do...while与while在结构上有区别。特点:不管条件是否满足都会先执行一次后再去判断是否继续执行
结构上:do{}while(判断条件); 注意:最后while后面的;不可少!!!
for
选择语句
if
int/int 结果为 int .有时会造成数据丢失,可以将两个int中的一个改为double,强制提升另一个数据的类型。
if语句后如果只有一条语句,大括号可以省略,但一般不建议省略。
if语句包含:简单if语句 单分支if语句 多分支if语句。
语句格式:if(boolean){代码段}
作用域:该内容能够被使用的地方,即包含它的那对{ }
if……else
语句格式:if(boolean){代码段}else{代码段}
在if语句中,If、else ……if 和else只会执行其一,else省略的是if和else if 之外的情况(互不相交,构成全集)。else不能单独出现。
当有多个 else if 语句存在时,可能会出现能满足多个 if 的情况,但是程序是按照语句书写顺序执行的,这是语句的书写顺序也很重要。例如:输出学生成绩评级的结果
switch
switch语句中检测的变量只能是32位或更小的整数值,即只能是 byte、short、int、char
一个switch可以有多个case,每个case后后有一个值和冒号
case后的值数据类型与switch中的相同,必须是常量或字面量
当变量值等于case 后的值,开始执行该case语句,直到遇到break。如果该case中没有break,虽然后面的case值不满足,也会执行后面程序中的case
default一般出现在switch语句的最后,结尾不需要break。当default不再最后时,一样需要用break结束。
switch语句中,每一个情况后如果没有break,都会把该语句后的情况都执行。知道遇到break
switch语句只测试变量和值的相等性,不用于大小比较,再单个case语句中只能比较一个值
switch语句擅长指定的值的选择.if语句擅长范围的选择.两者可以互换
case后面不加break可以很方便求某一天为一年中的第几天时
switch的工作原理:1.首先将值传入到switch中 2.将case 后面的值与传入的值对比 3.如果对比成功,则执行后面的语句,直到switch结束如果没有对比成功,则没有效果 4.为了让所有的值都有一定的效果,可以加上默认选项:default。case 后面的值必须和传入的值的类型相同 5.如果想执行一个case 语句后结束,需要在其后面加上break关键字6.选项的顺序无所谓,但是注意换了顺序记得加上相应的break;case后面加上常量或者字面量。
if语句中,if/else只会执行其中的一条语句。switch中如果没有break则都会执行,此为两者一个区别
continue关键字
break可以用来结束死循环
6.数组
数组--存放相同数据类型,长度不变的数据的连续内存的片段
数组的三种定义方式
第一种:int[] a = new int[10]; 可以拆成:int[] a;a = new int[5];
第二种:int[] a = {1,2,3,4};第二种长度(是由赋值的个数来自行计算的)。第二种方式必须在定义时赋值。int[] a;a = {1,2,3,4,5}; 这种拆分方式不行
第三种方式 int[] a = new int[] {1,2,3,4,5};长度同样是自行计算出来。可以拆开为:int[] a;a = new int[] {1,23,3,4};
数组和字符串都可以直接得到长度
数组:数组名.length
字符串:变量名.length()
数组为引用数据类型
数组不能改变长度,但是变量可以重新赋值。例如a = newint[8];//重新给a变量赋值一个新的数组,长度为8
System.out.println(a);直接输出数组,输出为内存地址
数组如果发现有没有赋初始值的元素,会自动赋默认值
数组中的下标就是平时所说的索引。下标只是来标记数组元素的位置,下标从0开始
下标越界错误提示
第一行最后的2,是说明代码中2这个数字导致的越界。
下面一行的数字5,是指明越界所在的行数。
java.lang.ArrayIndexOutOfBoundsException:数组下标越界
数组中每个元素的类型必须相同
创建数组的步骤:1、声明一个对数组的引用。2、使用new关键字初始化并指定数组大小。
Java中数据分基础数据类型和引用数据类型。数组为引用数据类型,所以需要一个引用来访问它,并且需要关键字new来初始化。
数组定义:int [ ] num;中num是一个引用,可以指向任意大小的int 类型数组。数组不能改变长度,但变量可以重新赋值。例如:Int[] nums=new int[2];nums=new int[4];最终num指向的数组长度为4,长度为2的数组被垃圾回收。
下标的要求:满足在数组的范围中,可以是变量、常量、表达式
System.out.println(arr[A]);System.out.println(arr[2^3]);
二维数组
二维数组的赋值和输出通常使用双重循环。二维数组的每一行长度不一定相等。
int[ ][ ] a; a.length 二维数组的行数,a[i].length 二维数组第i+1行的长度.a[i]=b[j];重新引用二维数组的第i+1个数组为数组b[j].
定义: int[][] a = new int[a][b];
a[i].length表示每一行的长度
a[0] = new int[6];// 将a中第一行重新赋值为新数组
System.out.println(a.length);
System.out.println(a[0].length);
方法
方法重载:类型不同或 参数个数不同
public访问修饰符
static静态修饰符
void返回类型(void--是无返回类型)
main 方法名--标识符
(String[] args) 参数列表 String[]类型args参数
Public static void main(String[] args):方法的声明部分--方法签名。从{ 开始到 }结束,被称为方法体。方法由两部分组成:声明部分+方法体部分
创建方法示例:public static double add ( int a , double b ) { }
Void为无返回类型,不能用东西来接受
没有返回类型的方法不能被拿来赋值
有返回类型的方法可以不赋值
java基础中所有自定义方法均写为public static形式
调用方法:类名.方法名(实参列表)
如何有参数要求,则传入参数
有类名才可以实现跨类调用
当不写类名时,会在当前类中调用
在同一个工程中的方法才可以相互调用
如果调用的是本类中的方法,则可以省略类名
定义方法时,参数列表被称为形式参数列表--简称形参
实参和形参关系: 数据类型和顺序一致,变量名随意,可以相同,可以不同。形参规定了调用时应该传递的值的数据类型以及顺序,实参是真的值。
写参数:确定方法有哪些要素
1.方法名:add
2.要不要返回?返回什么?
3.由2中得出返回内容的数据类型
4.方法中需要不需要从外部得到数据源?
参数只需要写定义,不需要赋值,参数应该是变量或常量的一种
每个参数之间用,隔开
当刚刚写完方法时发现有代码报错,原因是当方法有返回值时,需要使用关键字return表示返回
方法重载:在同一类中具有相同名称的方法,但是其参数列表不同
参数列表不同主要是:1.参数个数不同2.参数类型不同3.当参数类型不同时,其位置不同也算
返回类型的不同不是方法重载的依据
模块化开发与非模块化开发
模块化开发:将大块内容分解为无数个小的板块,每个板块完成自己的内容,再将所有小板块根据逻辑和需求进行组合,形成大板块--方法
模块化开发优点:代码的重用性提高,使代码的结构更加清晰
非模块化开发:与模块化相反
细节问题
算法:有穷的解决某个问题的方法和步骤
程序:完成指定任务的一条指令。通常程序是由多个模块组成的,每个模块对应一个文件夹。这些文件会被编译成可连接目标文件,然后连接器将所有的模块组合成一个可执行程序。
软件:程序+数据一系列按照特定顺序组织的,计算机数据和指令的集合。
计算机语言:机器语言——汇编语言——高级语言(编程语言)
计算机由CPU(执行机器语言) 和 内存组成
结构化语言:Fortran、basic、C
面向对象语言:C++、C#、Java
程序设计思路:分析问题——确定数据结构和算法——编程——调试
Javac:用来编译“.Java”文件,生成“.class(字节码、中间代码)”文件。
Java:用来运行“.class”文件
错误:
语法错误、逻辑错误通称开发错误
运行时错误:内存溢出、存储空间不够
流程图图形:椭圆、矩形、平行四边形、箭头、菱形、圆
多线程应用程序能够同时运行多项任务
文件名和类名相同
类名各单词首字母大写
Java编程中严格区分大小写
Print()不换行,括号内必须有值
Println()换行,括号内可以没有值
关键字:有特殊含义已经被Java使用
标识符:自定义的
Java类名不区分大小写
Ctrl+shift+O自动填充Scanner 需要的首行
引用数据类型String比较值,不用==,而是用.equals()。 a.equals(b)
Ctrl+?快速单行注释
整理代码格式:源码界面右键——source——format element
随机数:Math.random();用于产生[0,1)之间的随机数。生成a-z的取值,公式:(int)(Math.random()*(z-a+1))+a;正负数相同
强制关闭JRM,直接结束程序:System.exit(0);
布尔类型的变量 --赋值只能是true/false或者表示真假的结果
数据类型不匹配
自转为自行执行的效果,没有精度丢失。强行转换,在值前面用()加上要转换的数据类型,强转为非自行执行,执行后会造成精度丢失。也可能造成数据丢失。
boolean类型不参与数据类型转换
定义常量:final int A = 1;名称大写
起源
C语言的产生标志着现代计算机编程语言的开始
代码通常是指一个程序或者程序的一部分,对于人类来说是可读的。计算机可读的信息通常被组织为字节,字节码是对计算机可读的程序。
发展
Java三个版本:Java SE;Java EE;Java ME
API:应用程序编程接口
上机实训
环境变量的配置:计算机——属性——高级系统设置——高级——环境变量
Java运行环境三大任务:类加载、字节码校验、解释执行
总结
Java起源
Java平台分类
Java SE:适用于普通PC及笔记本电脑。为其他Java程序的开发和运行提供技术支持
Java EE:适用于服务器,重点定位与企业级别的分布式软件系统
Java ME:定位于嵌入式系统的开发和运行。如手机、家电等
Java的概念
特点:面向对象、类是基本构造单元、所有的语句都出现在一个类中。
面向对象
编写Java程序就是编写类,一个 . Java 文件中只能有一个public类
. Java 文件的文件名必须是在文件中声明的public类的名称
main( )方法的签名为: public static void main(String[] args)
技术特点
语言特征:简单,面向对象,可移植性,多线程,动态
平台是指程序运行的硬件或者软件环境
Java平台是一个运行在其它基于硬件的平台之上的纯软件平台
Java平台的两个组件:JVM 和Java API
Java程序源代码文件格式为“.class”。Java文件名必须与类名相同,区分大小写
java中函数成为方法
类是Java程序的基本构造单元,Java程序中所有的语句出现在一个类中
面向对象编程思想中包含两个基本概念:类和对象,其中对象由属性和行为组成。
类:抽象出对象的属性和行为,按此标准将对象分类,类是一类事物的统称。类是对象的抽象,生成对象的模板。
翻译的方法有两种:编译和解释。编译型语言以后不用重新编译,不能实现跨平台。解释性语言在运行的时候才翻译,效率低,可跨平台。
Java为一半编译半解释型语言
Java源程序文件被编译后生成Java字节码文件,字节码文件又称Java类文件
Java虚拟机本质上是一个软件。位于JDK或jre目录下的bin目录下
JavaAPI中是一些已经完成的软件组件。Java API与JVM一起将我们编写的Java程序与下层硬件隔离
Java程序执行机制(图待补)
加载类库顺序:先加载启动类库,再加载扩展类库,最后加载自定义类库
字节码加载器对加载的字节码进行校验
JIT,即时编译器:在每段代码执行前先将其进行编译为本地机器码
main方法是Java.exe进程的入口点
public 访问修饰符
2.Java基础语法
关键字
关键字
const 和 goto 不能在Java中使用
保留字
true、false、null
自定义标识符
标识符:Java代码中自己选用的单词
不能为关键字
由字母、数字、下划线或$组成
数字不能开头
区别大小写,长度无限制
数据类型、变量和常量
数据类型(11种)
基本类型
整型
byte(一个字节)=8位
short(2个字节)
int(4个字节)(数字默认类型)
long(8个字节)
浮点型
float(4字节)
double(8字节)
字符型
char(2字节)
布尔型
boolean(true、false、true/false)
引用类型
类
class
接口
子主题 1
数组
变量的定义:变量类型 变量名;
变量的赋值:变量名 = 值; --第一次赋值被成为初始化
注意:变量如果没有赋值,直接使用是会报错的。
常量的定义:final数据类型 常量名 = 值; --常量名全大写
Char可以直接存放字符型数据,也可以存放数字(不是真正的存放了数,而是赋值为在ASCNII表中查找到的对应字符)
运算符和表达式
如果在字符串中使用"",则需要转义符\ 将没有字符串意义的"这样书写\"
转义符的作用:将某个符号转换成其它意思例:",转义后为\" 变成了没有字符串含义的"
Boolean类型在其他方法无能为力的时候,往往能够解决问题。
三目运算符:boolean表达式?(a):(b);
区别--和++的四种情况
移位运算符>> << >>>
>>右移将值转换为二进制再整体往右移两位,注意,移出去的不要了(正整数的做法)快捷算法例:10>>3 即为10除以2^3
负数也相同,区别在于最小的整数值,例:-10>>3表示-10/2^3 理论上得-1.几,保存离它最小的整数:-2
<<左移将值转换为二进制再整体往左移两位,不够的用0来填充.例:正整数如下:intnum = 3<<4;
左移和右移在正整数的情况下,左移是乘,右移是除。负数和正整数一样。小数不考虑。
>>>无符号右移:正整数和>>的运算方式是一致的。无符号右移的负整数不考虑。
^异或,将两边的数值转换为二进制,然后对比,如果都相同,则记0,不同记1
短路符号有:&&,|| 分别表示短路和,短路或。这种符号如果第一个逻辑结果能够决定最终结果,则不会执行第二个逻辑
字符串的拼接:“+”在字符串中为拼接--但是注意两边只有一个为字符串的时候
System.out.println(11+2+"呵呵");输出13呵呵
System.out.println("呵呵"+11+2);输出呵呵112
上机实训
Java中的输入
Scanner sc = new Scanner(System.in);//这是输入前的准备
方法的重载与调用
String name = sc.next();//接收一个字符串
doublechengJi = sc.nextDouble();//接收一个double值
int age = sc.nextInt();//接收一个int值
char可以直接存放字符型数据,但也可以存放数值(注意:不是真的存了数)而是在ASC表中查处对应的字符后,再赋值。例如: chara = 'a'; charb = 66;得到B。后面的写法不行char c = '12';
Java注释
单行注释 //
多行注释 /* */
javadoc文档注释 /** */
3.程序流程控制
流程控制
公用类:public class{}
改变程序流程的三种方法
调用方法
2种 选择
if/else语句
switch语句
三目运算符可看作是if/else的一个简写版本
3个 循环
for循环
while循环
do/while循环
所有的控制结构都包含了某种类型的boolean判断
布尔逻辑
在组合boolean表达式时,有四种逻辑
和:全真为真
或:有真为真
非:真为假,假为真
异或:相同为假,不同为真
逻辑非运算符!可以放在任何布尔表达式或变量的开头
跳转语句
循环语句
while
do/while
do...while与while在结构上有区别。特点:不管条件是否满足都会先执行一次后再去判断是否继续执行
结构上:do{}while(判断条件); 注意:最后while后面的;不可少!!!
for
选择语句
if
int/int 结果为 int .有时会造成数据丢失,可以将两个int中的一个改为double,强制提升另一个数据的类型。
if语句后如果只有一条语句,大括号可以省略,但一般不建议省略。
if语句包含:简单if语句 单分支if语句 多分支if语句。
语句格式:if(boolean){代码段}
作用域:该内容能够被使用的地方,即包含它的那对{ }
if……else
语句格式:if(boolean){代码段}else{代码段}
在if语句中,If、else ……if 和else只会执行其一,else省略的是if和else if 之外的情况(互不相交,构成全集)。else不能单独出现。
当有多个 else if 语句存在时,可能会出现能满足多个 if 的情况,但是程序是按照语句书写顺序执行的,这是语句的书写顺序也很重要。例如:输出学生成绩评级的结果
switch
switch语句中检测的变量只能是32位或更小的整数值,即只能是 byte、short、int、char
一个switch可以有多个case,每个case后后有一个值和冒号
case后的值数据类型与switch中的相同,必须是常量或字面量
当变量值等于case 后的值,开始执行该case语句,直到遇到break。如果该case中没有break,虽然后面的case值不满足,也会执行后面程序中的case
default一般出现在switch语句的最后,结尾不需要break。当default不再最后时,一样需要用break结束。
switch语句中,每一个情况后如果没有break,都会把该语句后的情况都执行。知道遇到break
switch语句只测试变量和值的相等性,不用于大小比较,再单个case语句中只能比较一个值
switch语句擅长指定的值的选择.if语句擅长范围的选择.两者可以互换
case后面不加break可以很方便求某一天为一年中的第几天时
switch的工作原理:1.首先将值传入到switch中 2.将case 后面的值与传入的值对比 3.如果对比成功,则执行后面的语句,直到switch结束如果没有对比成功,则没有效果 4.为了让所有的值都有一定的效果,可以加上默认选项:default。case 后面的值必须和传入的值的类型相同 5.如果想执行一个case 语句后结束,需要在其后面加上break关键字6.选项的顺序无所谓,但是注意换了顺序记得加上相应的break;case后面加上常量或者字面量。
if语句中,if/else只会执行其中的一条语句。switch中如果没有break则都会执行,此为两者一个区别
continue关键字
break可以用来结束死循环
6.数组
数组--存放相同数据类型,长度不变的数据的连续内存的片段
数组的三种定义方式
第一种:int[] a = new int[10]; 可以拆成:int[] a;a = new int[5];
第二种:int[] a = {1,2,3,4};第二种长度(是由赋值的个数来自行计算的)。第二种方式必须在定义时赋值。int[] a;a = {1,2,3,4,5}; 这种拆分方式不行
第三种方式 int[] a = new int[] {1,2,3,4,5};长度同样是自行计算出来。可以拆开为:int[] a;a = new int[] {1,23,3,4};
数组和字符串都可以直接得到长度
数组:数组名.length
字符串:变量名.length()
数组为引用数据类型
数组不能改变长度,但是变量可以重新赋值。例如a = newint[8];//重新给a变量赋值一个新的数组,长度为8
System.out.println(a);直接输出数组,输出为内存地址
数组如果发现有没有赋初始值的元素,会自动赋默认值
数组中的下标就是平时所说的索引。下标只是来标记数组元素的位置,下标从0开始
下标越界错误提示
第一行最后的2,是说明代码中2这个数字导致的越界。
下面一行的数字5,是指明越界所在的行数。
java.lang.ArrayIndexOutOfBoundsException:数组下标越界
数组中每个元素的类型必须相同
创建数组的步骤:1、声明一个对数组的引用。2、使用new关键字初始化并指定数组大小。
Java中数据分基础数据类型和引用数据类型。数组为引用数据类型,所以需要一个引用来访问它,并且需要关键字new来初始化。
数组定义:int [ ] num;中num是一个引用,可以指向任意大小的int 类型数组。数组不能改变长度,但变量可以重新赋值。例如:Int[] nums=new int[2];nums=new int[4];最终num指向的数组长度为4,长度为2的数组被垃圾回收。
下标的要求:满足在数组的范围中,可以是变量、常量、表达式
System.out.println(arr[A]);System.out.println(arr[2^3]);
二维数组
二维数组的赋值和输出通常使用双重循环。二维数组的每一行长度不一定相等。
int[ ][ ] a; a.length 二维数组的行数,a[i].length 二维数组第i+1行的长度.a[i]=b[j];重新引用二维数组的第i+1个数组为数组b[j].
定义: int[][] a = new int[a][b];
a[i].length表示每一行的长度
a[0] = new int[6];// 将a中第一行重新赋值为新数组
System.out.println(a.length);
System.out.println(a[0].length);
方法
方法重载:类型不同或 参数个数不同
public访问修饰符
static静态修饰符
void返回类型(void--是无返回类型)
main 方法名--标识符
(String[] args) 参数列表 String[]类型args参数
Public static void main(String[] args):方法的声明部分--方法签名。从{ 开始到 }结束,被称为方法体。方法由两部分组成:声明部分+方法体部分
创建方法示例:public static double add ( int a , double b ) { }
Void为无返回类型,不能用东西来接受
没有返回类型的方法不能被拿来赋值
有返回类型的方法可以不赋值
java基础中所有自定义方法均写为public static形式
调用方法:类名.方法名(实参列表)
如何有参数要求,则传入参数
有类名才可以实现跨类调用
当不写类名时,会在当前类中调用
在同一个工程中的方法才可以相互调用
如果调用的是本类中的方法,则可以省略类名
定义方法时,参数列表被称为形式参数列表--简称形参
实参和形参关系: 数据类型和顺序一致,变量名随意,可以相同,可以不同。形参规定了调用时应该传递的值的数据类型以及顺序,实参是真的值。
写参数:确定方法有哪些要素
1.方法名:add
2.要不要返回?返回什么?
3.由2中得出返回内容的数据类型
4.方法中需要不需要从外部得到数据源?
参数只需要写定义,不需要赋值,参数应该是变量或常量的一种
每个参数之间用,隔开
当刚刚写完方法时发现有代码报错,原因是当方法有返回值时,需要使用关键字return表示返回
方法重载:在同一类中具有相同名称的方法,但是其参数列表不同
参数列表不同主要是:1.参数个数不同2.参数类型不同3.当参数类型不同时,其位置不同也算
返回类型的不同不是方法重载的依据
模块化开发与非模块化开发
模块化开发:将大块内容分解为无数个小的板块,每个板块完成自己的内容,再将所有小板块根据逻辑和需求进行组合,形成大板块--方法
模块化开发优点:代码的重用性提高,使代码的结构更加清晰
非模块化开发:与模块化相反
细节问题
算法:有穷的解决某个问题的方法和步骤
程序:完成指定任务的一条指令。通常程序是由多个模块组成的,每个模块对应一个文件夹。这些文件会被编译成可连接目标文件,然后连接器将所有的模块组合成一个可执行程序。
软件:程序+数据一系列按照特定顺序组织的,计算机数据和指令的集合。
计算机语言:机器语言——汇编语言——高级语言(编程语言)
计算机由CPU(执行机器语言) 和 内存组成
结构化语言:Fortran、basic、C
面向对象语言:C++、C#、Java
程序设计思路:分析问题——确定数据结构和算法——编程——调试
Javac:用来编译“.Java”文件,生成“.class(字节码、中间代码)”文件。
Java:用来运行“.class”文件
错误:
语法错误、逻辑错误通称开发错误
运行时错误:内存溢出、存储空间不够
流程图图形:椭圆、矩形、平行四边形、箭头、菱形、圆
多线程应用程序能够同时运行多项任务
文件名和类名相同
类名各单词首字母大写
Java编程中严格区分大小写
Print()不换行,括号内必须有值
Println()换行,括号内可以没有值
关键字:有特殊含义已经被Java使用
标识符:自定义的
Java类名不区分大小写
Ctrl+shift+O自动填充Scanner 需要的首行
引用数据类型String比较值,不用==,而是用.equals()。 a.equals(b)
Ctrl+?快速单行注释
整理代码格式:源码界面右键——source——format element
随机数:Math.random();用于产生[0,1)之间的随机数。生成a-z的取值,公式:(int)(Math.random()*(z-a+1))+a;正负数相同
强制关闭JRM,直接结束程序:System.exit(0);
布尔类型的变量 --赋值只能是true/false或者表示真假的结果
数据类型不匹配
自转为自行执行的效果,没有精度丢失。强行转换,在值前面用()加上要转换的数据类型,强转为非自行执行,执行后会造成精度丢失。也可能造成数据丢失。
boolean类型不参与数据类型转换
定义常量:final int A = 1;名称大写