Java语言是高级语言
高级:易于程序员理解的语言,其他额复杂操作交给计算机
Java安全
语法非常严格,编写好的代码无法随意修改(Java文件—>字节码文件—>JVM虚拟机中执行)
字节码文件:可以通过反编译软件反编译,可以得到源码,字节码文件可以混淆防止反编译
项目开发完成后付给用户的是字节码文件而不是源文件
开源项目
公开源代码的项目,用户可以随意下载并修改源码
好处:提高声誉,让项目更加完善,增加使用人数提高边际成本
坏处:不能盈利
Java的跨平台性
一次编译,到处运行。字节码文件能够被各版本(操作系统)JVM来执行
定义类
class 类名{}
主方法
在类中定义一个主方法,该方法是程序的入口
其他的方法要执行的话要在主方法里调用
public static void main(String[] args){}
注释
注释:单行注释,多行注释,文档注释
//这是一个单行注释
/*这是一个多行注释*/
/**这是一个文档注释*/
数据类型
数据类型:基础数据类型,引用类型
基础数据类型:byte,short,int,long,float,double,char,boolean
整形默认int,浮点型默认是double
char:(A:65,a:97)
定义变量:用于存储数据
在方法里定义一个变量,这个变量是属于方法的
数据类型 变量名 ;
变量名 = 值;
数据类型 变量名 = 值;
数据类型的转换:
-
自动转换:小–>大(大变量 = 小变量)
-
强制转换:大–>小(小变量 = (转换的类型) 大变量)
类型的自动提升
- 多个数据类型参与运算,会先转换成其中最大的数据类型
运算符
前置++/-- 与 后置++/–的区别
前置++/–:先运算再操作
后置++/–:先操作后运算
a += 2;等价于a=a+2
a+=2会自动转换
a=a+2要手动转换
三元运算符:
返回值类型(与返回值的类型要保持一致) 变量名称 = boolean 表达式 ? 返回值1 : 返回值2
等价于if-else
int i = 0 ;
if(表达式){
i = 返回值1
}else{
i = 返回值2
}
逻辑运算符
&和&&区别
&两个表达式都会执行
&&执行第一个如果第一个true再执行后面的表达式,如果为false不执行后面的表达式
|和||区别
|两个表达式都会执行
||执行第一个如果返回的true后面的表达式不执行,如果为false再执行后面的表达式
顺序结构
程序从上向下执行
选择结构
按照逻辑去执行相应的代码
if(boolean表达式){
}
------------------------------------------------------------------
if(boolean表达式){
}else{
}
------------------------------------------------------------------
if(boolean表达式){
}else if(boolean表达式){
}else{
}
------------------------------------------------------------------
switch(byte/short/int/char/String){
case 值:
break;
...
default :
...
}
循环结构
让系统执行相同的操作
while(boolean 表达式){
循环体
}
------------------------------------------------------------------
do{
循环体
//不管怎么样都会都会被执行一次
}while(boolean 表达式)
------------------------------------------------------------------
for(初始化参数;boolean 表达式;循环体结束后的操作){
循环体
}
------------------------------------------------------------------
for(返回类型 变量名 : 数组/列表 ){
//变量用于接收数组中的每一个元素
//如果在遍历过程需要关心数组的索引的话就不要使用foreach
循环体
}
嵌套循环
for(){
//外层循环如果为true的时候执行里层循环
for(){
//里层循环执行完毕后再执行外层循环
}
}
用于遍历二维数组、三角形等等
控制循环
break跳出循环
continue跳过本次循环一次
return结束方法
数组
数组的定义:存储多个相同类型的数据
数组的定义初始化
静态初始化:变量[] 变量名 = {值1,值2,值3};
动态初始化:变量[] 变量名 = new 变量[数组长度];
如果明确知道数组中的内容可以使用静态初始化,反之使用动态初始化
操作数据
取值:数组[索引]
赋值:数组[索引] = 值 ;
方法
定义:
[访问修饰符] [是否静态] 返回值类型 方法名([参数类型 参数1,参数类型 参数2....]){
[return 返回值;(方法返回值用void声明可以不使用)]
}
使用:
类名.方法名(参数...);
形式参数:存在哪些未知的因数,也就是定义方法括号里面的参数(简称:形参)
实际参数:在实际调用的时候给的参数就是实际参数(简称:实参)
可变参数:可变参数就是一个一维数组,底层会将实参转换成第一个数组传到方法里