java基础2

java基础02

0x00 变量及运算

​ 和c差不多字母数字下划线(数字不能在第一位) 关键字不行,java是一种强类型语言,所有变量类型必须明确且不可改变。

​ 定义变量 int a=100 定义了一个变量 并且被赋值了100

final int a =100 这样就定义了常量 final修饰的变量 方法都不可以再改变

​ 同样的 整数之间运算的结果只能是整数,为了进行小数运算,我们需要引入浮点数 float double

​ 和c一样 java的类型转换也是(类型)变量

​ 运算符及优先级:

TIM截图20200227104645

0x01 流程控制

​ 和c没什么不同 顺序 判断 循环 循环中只多出来一个for each循环:

int[] a=new int[6];
for(int n:a){
    System.out.println(n);
}

​ n会在每一次循环待变a的下一个值

0x02 数组

int[] a=new int[8];//一维数组
int[][] b=new int[8][8];//二维数组
//和c不同,[]在变量名前面  前面是定义后面是创建

0x03 字符

char c='A';// 字符类型 注意的是java中用的是unicode 字符 4个字节
char c='\u0041';// \u 表示这是一个unicode编码 0041是 16进制 10进制65 字符为 'A'
char b='中';//这在c语言中是由编译器将'中'这个字符编码然后第一个字节给b的,而java char类型原生为unicode,可以直接保存
byte b=''

TIM截图20200227111412

0x04 包裹类型

TIM截图20200227112001

​ 实际上包裹类型就是类,之所以需要这些包裹类型,是因为我们需要这些

类的静态成员变量或者静态成员方法,如Integer.MAX_VALUE 对应214748367

int a=10;
Integer b=10;
a.length //a的长度
Integer.MAX_VALUE;

TIM截图20200227112434

0x05 字符串变量

​ String(一串) 首字母大写表示是一个类,而不是基础类型

TIM截图20200227112803

​ 如何理解这两句话,String的变量是对象的管理者而不是所有者? 因为 单独的 String a;并不会创建一个对象,a这个字符串变量是空的,空有其名,是后面的new String(“hello world”);创建的字符串,变量名只是这个字符串地址空间的别名,也就是我们用变量名来代称这个字符串

​ 字符串的连接。用加号 “+”可以连接两个字符串 “hello”+”world”->”helloword”。

​ 当加号的一边是字符串另一边不是字符串的时候,会将其表达为字符串(数据类型没有改变 只是以字符串的形式展示)然后做连接

​ 输入字符串

Scanner in=new Scanner(System.in);
in.next();读入一个单词, 单词的结束标志是任何空格(包括tab和换行)
in.nextline();读入一整行

​ 上面说到字符串变量是字符串的管理者而非拥有者,所以如果我们让两个字符串变量相互赋值,只是会改变变量管理哪一个字符串,而不会改变字符串的具体内容TIM截图20200227113944

​ (java中字符串是不可修改的,只能任何对其修改都只能新建一个我们想要的串)TIM截图20200227114145

​ 也就是 ==是看是否是同一个引用,而equals 是看字符串的值是否相同。(每一个字符是否相同)

0x06 字符串操作

TIM截图20200227115237

​ 也就是如果只有字符串变量,而改变量没有对应的对象,那么不能使用字符串操作

String a="nihao";
String b="hello world";
String c;
a.length();
a.compareTo(b);
c.length();//报错 c没有对应字符串 无法执行字符串操作
a.charAt(0); //'n' 得到对应位置的 字符
a.toCharArray();//返回字符串数组 才能够for each
a.substring(start);//从start位置开始截取字符串,注意返回的字符串是新的字符串
a.substring(start,end);