class-file:字节码文件
java-file:源文件
javac:java的编译功能,对指定的.java后缀的文件进行编译。 生成了jvm可以识别的字节码文件,也就是class文件。
java:运行功能,启动jvm加载运行,并运行javac编译的class文件,这个文件执行的起点是main函数。
基本点:
1、关键字: java内已经定义了的单词,具有特殊含义,例如public、class等。
2、常量: 一个程序中不变的数据
3、变量: 实质上就是内存中的一个存储空间,该空间有自己的名称(变量名)和类型(数据类型),而且用于存储常量的数据。
变量名称可以包含a—z、A—Z、_、 $、¥ 、 0~9 ,但只能由 a~z 、 _ 、 $ 、¥
开头,不可以大写字母、数字开头,且不可以使用关键字。遵循驼峰命名法:nanjingzhongbo ---> nanJingZhongBo
,变量使用步骤:先声明变量再赋值 赋值符。
局部变量:在方法或者代码块中,或者在参数列表中,随着方法的调用或者代码块的执行而存在,调用完毕或者执行完毕后消失
成员变量:在类中方法外面,随着对象的创建而存在,随着对象的消失而消失,有默认初始值
public class Student{
int studentId;//成员变量
int classId;//成员变量
public static void main(String[] args) {
Student stu = new Student();
stu.studentId=1;
//int a;
//System.out.println(a);//这样编译报错,因为局部变量a没有赋予初值
int b = 2;
System.out.println(b);//输出2
System.out.println(stu.student);//这里实例化了Student,并且赋予studentId初值1
System.out.println(classId);//这里未赋予初值,classId是int类型默认为0
}
}
4、数据类型:
整型:byte、short、int、long
非整型:float、double
非数值型:char、String、boolean
自动类型转换:小类型向大类型转换,隐式转换(条件:两种类型要兼容,小类型向大类型转换 如int转向double)
强制类型转换:大类型向小类型转换,就必须进行强制类型转换,有可能造成 成溢出,精度丢失。
5、运算符号:
算数运算符:+、-、*、/、%、++、--
赋值运算符:= 、+=、 -= 、 *= 、 /= 、 %=
条件运算符:== a==b 结果为布尔值 相等为true 不相等为false,!= a!=b 结果为布尔值 不等于为false 等于为true,<小于、<=小于等于、>大于、=>大于等于,String类型(及其他引用类型的)的值是否相等:equals a.equals(b) a和b的值是否相等
逻辑运算符:
逻辑:运算符两侧的值都进行判断
短路:运算符左侧的值如果已经可以判定整个表达式的值,就不会判断右侧
(短路)与 && & -->逻辑与 两者都为true 结果为true 否则为false
(短路)或 || | -->逻辑或 两者都为false 结果才为false 否则为true
非 !
语法:
1、选择结构:
基本if:
if(条件){
代码;
}
if-else
if(条件){
代码1;
}else{
代码2;
}
多重if
if(条件1){
代码1;
}else if(条件2){
代码2;
}else if(条件3){
代码3;
}else {
代码4;
}
嵌套if
if(条件1){
代码1;
if(条件2){
代码2;
}else if(代码3){
代码4;
}else{
代码5;
}
}else{
代码6;
}
switch结构,只能处理等值条件判断
表达式写的的值为int short byte char String
switch(变量){
case1:语句;
break;
default:语句;
}
2、循环结构
while结构 先判断再执行
int i=1;
while(i<=100){
代码;
i++;
}
do-while 先执行一次再判断
int i=1;
do{
代码;
i++;
}while(i<=100);
for循环 循环次数固定
for(int i=1;i<=100;i++){
代码;
}
for(参数初始化;条件判断;更新变量){
代码;
}
**Java二重循环:**外循环控制行,内循环控制列
**Break语句:**跳出当前循环或者switch结构,代表终结,必须在一定的条件基础上,同结构体代码中,break下面一般没有其他代码,执行break时,不会执行for循环变量的改变语句。
**continue语句:**跳过当前循环之后的代码一次,do-while调到while判断的地方。
**return语句:**跳出整个方法,用着for循环内,不论几层,都会跳出循环所在的方法;返回值,运行到return,直接结跳整个方法。
数组:
1、一维数组:
数组是一个变量,储存相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
2、数组基本要素
标识符 数组名
数组元素 值
元素下表 从0开始
元素类型 类型
数组长度固定不变,避免数组越界
3、步骤
数组的声明 int[] a;
分配连续的空间 a=new int[5];
(new是java中优先级最高的,有new就有分配空间分配多少由[]决定)
声明和分配一起: int[] a=new int[5];
声明、分配空间和赋值一起 : int[] a=new int[5];
和int a[]=new int[5];
一样
这种:int a[]={1,2,3,4,5};
不需要new,不需要指定数组长度
对元素赋值 正常赋值 a[0]=1;
对第一个元素的赋值,注意下标从0开始,到数组长度减一的位置结束
如果是基本数据类型,未赋值的情况下会有默认值,对于所有整型默认值是0,对于小数默认是0.0 ,char的默认是空字符,布尔值是false,String类型默认类型是null(null是所有非基本类型的默认值)
数组越界:只要不在从0开始,到数组长度减一的范围内赋值或者使用都会越界异常