第二章 基础语法、定义
1,单行注释 //
多行注释 /*......*/
public class后面代表定义一个类的名称,类是java当中所有源代码的基本组织单位。
main 方法代表程序执行的起点
2,
关键字:1.完全小写的纯英文字母,有特殊颜色
标识符:自己定义的(类,方法,变量...)
1.包含字母,数字,$,下划线
2.不能以数字开头
3.不能是关键字
命名规范:
1.类名:首字母大写,后面每个单词首字母大写
2.方法名、变量名:首字母小写,后面每个单词首字母大写
3,常量的分类:
1.字符串常量 "abc"
2.整数常量 100
3.浮点数常量 2.5
4.字符常量 'a'
5.布尔常量 ture,false
6.空常量 null(代表没有任何数据)
4,基本数据类型:整数,浮点数,字符,布尔
引用数据类型:类,数组,接口,字符串
byte 1个字节 -128~127
short 2个字节
int 4个字节
long 8个字节
float 4个字节
double 8个字节
char 2个字节
boolean 1个字节
注意:
1.浮点数可能只是一个近似值,并非精确的值
2.数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但float是4字节,long是8字节
3.浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L
5,变量
注意: 1.变量之间的名称不可以重复
2.对于float和long类型,字母后缀F和L不能丢掉
3.变量使用不能超过作用域的范围
作用域:从定义变量的一行开始,一直到直接所属的大括号结束为止
6,数据类型转换
自动类型转换(隐式):数据范围从小到大
强制类型转换(显式):(要转换成的数据类型)
7,ASCII编码表
'0';48
'a' : 97
'A' :65
Unicode码表:万国码,开头0-127和ASCII完全一样,后面还有更多字符
8,对于字符串String来说,加号代表字符串连接操作
任何数据和字符串进行连接的时候,结果都会变成字符串
9,自增运算符
1.在单独使用时,前++和后++没有任何区别,即++a和a++完全一样
2.在混合使用时:
如果是前++,那么变量立刻马上加一,然后拿着结果进行使用 【先加后用】
如果是后++,那么首先使用变量本来的数值,然后再让变量加一【先用后加】
10,比较运算符
1.比较运算符不能连写
2.其结果是一个boolean值
11,逻辑运算符
1.与“&&”,或“||”具有短路效果;如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行
一,对于byte,short,char.
1.如果右侧赋的值如果没有超过左侧的范围,那么编译器补上强转;否则报错
2.在给变量进行赋值时,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果
例如: short result=5+8;//等号右边全都是常量,编译之后得到的.class文件中相当于直接就是:
short result=13;(右侧的常量结果数值,没有超过左侧范围,所以正确)
而如果:
short a=5;
short b=8;
short result=a+b;(是错误写法!short+short-->int+int-->int,左侧需要int类型)
二,流程控制
1.顺序结构
2.判断语句
switch语句注意事项:
01.多个case后面的数值不可以重复
02.switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
03.break可以省略-->匹配到哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止
3.循环语句
for,while,do-while
基本组成成分:
01.初始化语句:在循环开始最初执行,而且只做唯一一次
02.条件判断
03.循环体
04.步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次
05.break是结束循环,continue是跳过本次循环
06.【死循环】
结束:ctrl+C
标准格式:
while(true){
循环体
}
三,方法
定义:修饰符 返回值类型 方法名称(参数类型 参数名称,...){
方法体
return 返回值;
}
例如:public static void 方法名称(){
方法体
}
public static int sum(int a,int b){
int result=a+b;
return result;
}
修饰符现阶段固定写法:public static
方法名称的命名规则和变量一样,使用小驼峰
注意:
1.方法定义的先后顺序无所谓
2.方法的定义不能产生嵌套包含关系
3.要想执行方法,一定要进行方法的调用
4.return后面的返回值数据必须和方法的返回值类型对应
5.没有返回值,只写return;或者不写
调用格式:
1.单独调用: 方法名称(参数);
2.打印调用: System.out.println(方法名称(参数));
3.赋值调用: 数据类型 变量名称=方法名称(参数);
对于没有返回值的方法,只能单独调用。
方法的重载(overload):多个方法的名称相同,但是参数列表不一样
1.好处:只需要记住一个方法名称,就可以实现类似的多个功能
2.
参数个数、参数类型、参数的多类型顺序不同的方法可以是用方法重载
参数名称和返回值类型不同的不可以用方法重载
四,数组
1.特点:引用数据,数组中数据类型统一,长度在运行期间不可改变
2.初始化方式:
动态初始化(指定长度): 数据类型[] 数组名称=new 数据类型[数组长度];
静态初始化(指定内容): 数据类型[] 数组名称=new 数据类型[] {元素1,元素3,...};
数据类型[] 数组名称={元素1,元素2,...};
3.使用:
直接打印数组名称,得到的是数组对应的内存地址哈希值
访问数组格式:数组名称[元素的编号]
注意:1.编号从0开始
2.使用动态初始化数组时,其中的元素将会自动拥有一个默认值。
整数类型:默认为0;
浮点类型:默认为0.0;
字符类型:默认为'\u0000';
布尔类型:默认为false;
引用类型:默认为null。
4.获取数组长度(得到一个int数字): 数组名称.length
5.数组的遍历输出:for(int i=0;i<数组名称.length;i++);{
System.out.println(数组名称[i]);
}
6.求数组中的最值:逐一比较
7.数组可以作为方法参数--传递地址
8.数组可作为方法返回值--返回地址
五,java内存
划分为5个部分:
1.栈(Stack):存放的都是方法的局部变量。方法的运行一定要在栈中运行。
局部变量:方法的参数,或是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存中消失。
2.堆(Heap):凡是new出来的东西,都在堆中。
堆内存中东西都有一个地址值:16进制
堆内存里的数据,都有默认值。规则:
整数类型:默认为0;
浮点类型:默认为0.0;
字符类型:默认为'\u0000';
布尔类型:默认为false;
引用类型:默认为null。
3.方法区(Method Area):存储.class相关信息,包含方法的信息。
4.本地方法栈:与操作系统相关
5.寄存器:与CPU相关