byte a1 = 1;
short a2 = 3;
short a3 = a1 + a2;//false 报错
int a3 = a1 + a2;//true
char a1='a';
char a2 ='a'+1
system.out.println("100"+3+5);//1008
system.out.println(1+3+"100");//4100
system.out.println(a1);//a
system.out.println(a1+2);//99
system.out.println(a2);//b
先声明数组 公式:数据类型 数组名[] 或者 数据类型 [] 数组名
再创建数组 公式:数组名 = new 数据类型[大小]
例:int a[] ; //声明数组
int a[] =new int[5];//创建数组
第二种方式
int a[] ={1,2,3,5... }
自动类型转换规则:精度小的类型自动转换为精度大的数据类型
char->int->long->float->double
byte->short->int->long->float->double
强制类型转换--》公式:(需要转换成什么数据类型)原数据类型的变量
( 强制转换类型会有数据的流失 )
例如
自动类型转换
int a =10;
float b = a+1.5f;
double c = a+1.3;
强制类型转换
double a=5.5;
int b =(int) a;
例如:整型:123转为String 类型
Integer.parseInt("123");
公式为:类的包装类.parseInt("内容");
特例:字符串转为字符(得到字符串的第几个字符)
str1.charAt(2);
String str1 = 1.1 + " ";
String str2 = 1 + " ";
String str3 = true + " ";
i++ : 先赋值 后加1
++i : 先加1 后赋值
&:(与)有一个false 结果为false |:(或)有一个true结果为true
^:(异或)一个false 一个true才为true 否则为false
&&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false
& 逻辑与:不管第一个条件是否为 false,第二个条件都要判断|| 短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true
| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断
开发中, 我们使用的基本是使用短路与&&和 ||
int x =1;
int y =2;
if(x++ = 2 & ++y =3){
x = 15;
}
System.out.println("x = "+x+"y ="+y); // x = 1 y = 3
int x =1;
int y =2;
if(x++ =2 && ++y =3){
x =15
}
System.out.println("x = "+x+"y ="+y); // x = 1 y = 2
int x =1;
int y =2;
if(x++ =2 | ++y =3){
x =15
}
System.out.println("x = "+x+"y ="+y); // x = 15 y = 3
int x =1;
int y =2;
if(x++ =2 || ++y =3){
x =15
}
System.out.println("x = "+x+"y ="+y); // x = 15 y = 2
//导入输入包
import java.util.Scanner
//myScanner 就是 Scanner 类的对象
Scanner myScanner = new Scanner(System.in);
//接收用户输入字符串
String name = myScanner.next();
//输出字符串
Systom.out.println("name="+name);
第一种方法:直接翻转 取最后一个值和第一个值交换位置
for( int i = 0; i < len / 2; i++) { //前后交换只需要交换个数的一半次
temp = arr[len - 1 - i];//这里len-1为最后一个元素,再减i为倒数第(i+1)个元素
arr[len - 1 - i] = arr[i];
arr[i] = temp;
}
第二种方法:使用第一个数组,逆序赋值给第二个元素
int[] arr = {11, 22, 33, 44, 55, 66};
int[] arr2 = new int[arr.length];
//逆序遍历 arr
for(int i = arr.length - 1, j = 0; i >= 0; i--, j++) {
arr2[j] = arr[i];
}
第一次比较把数组中最大的元素放到数组最后,第二次比较把第二大的放在倒数第二个元素的位置,以此类推,形成一个从小到大排序的数组,如果需要由大到小的数组,改符号即可
for( int i = 0; i < arr.length - 1; i++) {//外层循环是 n 次
for( int j = 0; j < arr.length - 1 - i; j++) {
//如果前面的数>后面的数,就交换
if(arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
//定义一个二维数组
int[][] yangHui = new int[12][];
//遍历 yangHui 的每个元素
for(int i = 0; i < yangHui.length; i++) {
//给每个一维数组(行) 开空间 (每一行的元素个数与行数相同)
yangHui[i] = new int[i+1];
//给每个一维数组(行) 赋值
for(int j = 0; j < yangHui[i].length; j++){
//每一行的第一个元素和最后一个元素都是 1
if(j == 0 || j == yangHui[i].length - 1) {
yangHui[i][j] = 1;
} else {//中间的元素 推演出来的算式
yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];
}
}
}
,