JAVA语言程序设计
预备:头格式:public class name {
public static void main(String[] arge){}
}
输出 system.out.println();
System.out.println("hello");
一:基本数据类型
1整数
byte byte a1 = 1;
int(默认) int a = 10;
short short a2 = 2;
long long a4 = 123L;
定义long类型的变量,数据值后要加L或l作为后缀,建议使用大写
2浮点数
float float f = 10F;
定义float类型变量时,数据值后加F为后缀
double(默认)double d = 12;
3字符
char char c = '中';
4布尔
boolean boolean o = true; 只有true和false
取值范围大小问题
double>float>long>int>short>byte
二:标识符
硬性要求:
1数字,字母,下划线_,美元$组成
2不以数字开头
3不是关键字
4区分大小写
软性要求(阿里巴巴编名方法):
一:小驼峰命名法:方法,变量
1 标识符是一个单词,全部小写 eg: name
2标识符由多个单词组成,第一个单词首字母小写,其余单词首字母大写 eg:firstName
二:大驼峰命名法:类名
1 标识符是一个单词,首字母大写 eg : Student
2 标识符由多个单词组成,每个单词首字母大写
Eg : GoodStudent
三: 见名知意
三:键盘录入
1 导包
import java.util.Scanner;必须在类定义上边
2创建对象
Scanner sc = new Scanner(System.in);
只有sc是变量可以变,其他不能变
3接收数据
int i = sc.nextInt();
只有i是变量名可变,其他不允许变
四:IDEA快捷用法
Java头快捷:psvm
输出sout
五:运算符和表达式
1算数运算符 : + - * / % 有小数参与计算,可能不准确
除法:整数参与计算,结果只能是整数,小数参与,结果小数。
隐式转换(自动类型提升):把取值小的转成大的;
byte short char 三种数据类型在运算时,都直接提升到int,再进行运算 double>float>long>int>short>byte
强制转换:如把取值范围大的数值赋值给取值范围小的变量,是不允许的,需要强制类型转换。
格式:目标数据类型 变量名=(目标数据类型)被强制转的数据
double a = 12.3;
int b = (int)a;
“+”的操作中出现字符串,“+”是字符串连接符,将前后数据拼接,产生新的字符串 “123”+ 123 -> “123123”
连续进行时,从左到右逐个执行
1+99+“年老字号” -> “100年老字号” 1+99 没有字符串,正常加
2自增自减:
a++ 先用后加,后自增 ++a 先加后用,先自增
--
单独写一行没区别
3赋值运算符:
a+=b 即 a = a+b
+= -= *= /= %= 底层都隐藏了一个强制类型转换
== != > < >= <= 结果只有true false
4逻辑运算符:
& 逻辑与(且) 两边都为真,结果为真,相当于乘法
| 逻辑或 两边都为假,结果为假,相当于加法
^ 逻辑异或 相同为false,不同为true
! 逻辑非 取反
5 短路逻辑运算符:
&& 短路与 结果和&相同,但有短路效果
|| 短路或 结果和|相同,但有短路效果
短路:前边可以判断整个运算是true还是false,后面就不运行
6三元运算符:
格式:关系表达式?表达式1:表达式2;
先计算关系表达式的值
真:执行表达式1 假:执行表达式2
输出方法:1把三元运算符的结果赋值给一个变量
2把三元运算符的结果直接打印
7运算符优先级
()优先于所有
六:流程控制语句
1 顺序结构
2分支结构:if switch
If格式: if (关系表达式){语句体;}
if (关系表达式){语句体1;
}else{
语句体2;}
if (关系表达式){语句体1;
}else if{
语句体2;}else if{
语句体3;}else{
语句体4;}
从上到下依次执行:
只要有一个判断为真,就执行对应语句体
如果所有判断都为假,就执行else语句
switch格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break;
}
1:表达式取值为byte short int char。
2:case后面跟要和表达式比较的值
3:break表示中断,结束,用来结束switch语句
4:default表示所有情况不匹配,就执行该处内容
5:case后只能是自面量,不能是变量
6:case的值不能重复
Case穿透:没有break导致
首先拿小括号中的表达式的值跟下面每一个case进行匹配;
如果匹配上了,就执行对应语句体,如果此时发现break,结束整个switch语句;
如果没有发现break,程序会继续执行下一个case的语句体,一直遇到break或右大括号为止;
If和switch使用场景
If:一般对范围的判断
Switch:把有限个数据一一列举,让我们任选其一
循环:
1 for循环:
格式:for(int i = 0;i<10;i++){
System.out.println(“hello world”);}
While (条件判断语句){
循环体语句;
条件控制语句;}
七:数组
数组:指一种容器,可以存储同种类型的多个值(结合隐式转换)。
格式1: 数据类型 【】数组名
格式2: 数据类型 数组名【】
初始化:数据类型【】 数组名 = new 数据类型【】{元素1,…};
Int [] array = new int[]{11,22,33};
简写:数据类型【】 数组名 = {元素1,…};
直接打印数组名,出现的是地址
索引system.out.println(arr[1]);
一旦覆盖,原来的数值不存在了,只显示覆盖的值
遍历:利用for循环
长度属性:length
调用方式:数组名.length
格式:for(int i = 0;i<arr.length;i++){}
动态初始化
数据类型【】 数组名 = new 数据类型【数组的长度】;
在创建的时候,由自己指定数组的长度,由虚拟机给出默认的初始化值
数组默认初始化值:
整数型:0 小数类型:0.0 字符类型:‘/u0000’空格
布尔型:false 引用数据类型(string…):null
数组索引越界问题:
若长度是5的数组,最小索引:0 最大索引:4(长度减一)