注释
//单行注释
/* 多行注释*/
关键字
public,class,static全部都是小写,代码块中全部都是小写
常量
一个不变的数值 ,
字符串常量 “我是程昊” 字符常量 “A”
空常量 null(不能直接输出)
整数常量
小数常量
数据类型
基本数据类型
数值型
整数(byte 1 -128~127,short 2,int 4,long 8)
浮点数(float 4, double 8) java中浮点数默认的是double,3.14和1e2都是double型可以用(float)强制转换
字符(char 2)
非数值型
布尔(boolean 1)
2.引用数据类型
类(class)
接口(interface)
数组([ ])
标识符
小驼峰命名
首个单词小写,后面单词首字母大写 firstNumber
大驼峰命名
首个单词首字母大写,后面单词首字母也大写 GoodStudent
- 由数字,字母,下划线,
美元符号 - 不能以数字开头
- 不能是关键字
- 区分大小写
类型转换
数据范围(精度)从小到大
自动类型转换,把低精度数转换为高精度数
byte-short-int-long-float-double
char-int-long-float-double
强制类型转换,把高精度转换为低精度
算数运算符
加+ 减- 乘* 除/(得到商 ) 取余%
字符的 + 操作
多个类型的基本数据运算时,整个算数表达式的类型会自动进行提升
byte,short,char类型将被自动提升到int类型
整个表达式的类型自动提升到表达式最高等级的数,等级顺序:byte,short,char–>int–>long–>float–>double
字符串 + 操作
1 | System.out.println("fuck"+"you"); //fuckyou |
赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘号赋值 | a*=b,将a * b的值给a |
/= | 除后赋值 | a/=b,将a/b的商给a |
%= | 取余后赋值 | a%=b,将a/b的余数给a |
1 | short a=10; |
拓展的赋值隐含了强制类型转换
自增自减运算符
1 | i++; //先赋值,在运算 |
关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
逻辑运算符
运算符 & 且
运算符 | 或
运算符 ^ 异或(相同为true不同为false)
运算符 ! 非
- 逻辑&,无论左边真假,右边都要执行
- 短路&&,左边为真,右边则执行。左边为假,右边不执行
- 逻辑 | ,无论左边真假,右边都要执行
- 短路 ||,左边为真右边不执行,左边为假右边执行
三元运算符
格式:关系运算符?表达式1:表达式2;
1 | int max=a>b?a:b; |
数据输入
1 | import java.util.Scanner; |
流程控制
顺序结构,从上到下依次执行
选择结构
1
2
3if(){
}else if(){
}1
2
3
4
5
6
7
8
9
10
11
12
13switch(表达式){
case 值1:
case 值4:
语句1;
break;
case 值2:
语句2; //如果没有break后面的语句都会执行,default也会执行
case 值3:
语句3;
default:
语句4;
}for循环
1
2
3for(初始条件;判断语句;条件控制){
循环语句;
}
水仙花
1 | for(int i=100;i<1000;i++) { |
while循环
1
2
3while(条件判断){
}do..while
1
2
3do{
}while(条件判断);语句break,结束整个循环
语句continue,结束当前一次循环
Random
1 | import java.util.Random //导包 |
猜数字
1 | import java.util.Random; |
idea
代码补全:psvm主方法,sout打印输出,ctrl+alt+L规格化
elipse补全:syso,main
数组
数组(array)是一种用于多个相同类型数据的存储模型
定义数组:int[] arr=new int[3]; 为arr分配地址
整数默认值为0,浮点数为0.0,布尔数为false,字符为空字符,引用为null
数组静态初始化
int [ ] arr=new int [ ]{1,2,3} 等价于
简化初始化 int [ ] arr={1,2,3}
数组常见操作
arr.length 数组元素的个数
1 | for (i=0;i<arr.length;i++){ |
内存分配
栈内存
储存局部变量,声明的对象“Person p”
堆内存
实例化”new Person()”,“new int[2]” new出来的内容
多个数组指向相同,如何一个数组修改了堆内存的值,另一个的数组值也改变
方法
用一定功能的代码集,先创建再调用
public static void 方法名(数据类型 变量名1,数据类型 变量名2);
形参和实参
形参:方法定义中的参数
实参: 方法调用时传入的参数
方法注意事项
方法不能嵌套定义
void表示无返回值,可以省略return,也可以单独写return后面不加数据
方法重载
- 多个方法在同一个类中
- 多个方法名相同
- 多个方法的参数不同,类型不同,或者数量不同
- 与返回值无关,返回值不同不是方法重载
1 | public class main{ |
方法参数传递(基本类型)
1 | public static void main (String[] args){ |
方法参数传递(引用类型)
1 | public static void main (String[] args){ |
数组最大值
1 | public static int getMax(int[] arr){ |