java基础02
java基础02
0x00 变量及运算
和c差不多字母数字下划线(数字不能在第一位) 关键字不行,java是一种强类型语言,所有变量类型必须明确且不可改变。
定义变量 int a=100 定义了一个变量 并且被赋值了100
final int a =100 这样就定义了常量 final修饰的变量 方法都不可以再改变
同样的 整数之间运算的结果只能是整数,为了进行小数运算,我们需要引入浮点数 float double
和c一样 java的类型转换也是(类型)变量
运算符及优先级:
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不同,[]在变量名前面 前面是定义后面是创建
int[] b=new int[]{1,2,3,4};//静态初始化
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=''
0x04 包裹类型
实际上包裹类型就是类,之所以需要这些包裹类型,是因为我们需要这些
类的静态成员变量或者静态成员方法,如Integer.MAX_VALUE 对应214748367
int a=10;
Integer b=10;
a.length //a的长度
Integer.MAX_VALUE;
0x05 字符串变量
String(一串) 首字母大写表示是一个类,而不是基础类型
如何理解这两句话,String的变量是对象的管理者而不是所有者? 因为 单独的 String a;并不会创建一个对象,a这个字符串变量是空的,空有其名,是后面的new String(“hello world”);创建的字符串,变量名只是这个字符串地址空间的别名,也就是我们用变量名来代称这个字符串
字符串的连接。用加号 “+”可以连接两个字符串 “hello”+”world”->”helloword”。
当加号的一边是字符串另一边不是字符串的时候,会将其表达为字符串(数据类型没有改变 只是以字符串的形式展示)然后做连接
输入字符串
Scanner in=new Scanner(System.in);
in.next();读入一个单词, 单词的结束标志是任何空格(包括tab和换行)
in.nextline();读入一整行
上面说到字符串变量是字符串的管理者而非拥有者,所以如果我们让两个字符串变量相互赋值,只是会改变变量管理哪一个字符串,而不会改变字符串的具体内容
(java中字符串是不可修改的,只能任何对其修改都只能新建一个我们想要的串)
也就是 ==是看是否是同一个引用,而equals 是看字符串的值是否相同。(每一个字符是否相同)
0x06 字符串操作
也就是如果只有字符串变量,而改变量没有对应的对象,那么不能使用字符串操作
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);