Java学习

Java学习

编译文件

java文件先通过javac Hello.java编译成字节码文件,会生成一个class文件

然后再java Hello  (注意不用加class ,java 本身就是编译class)

快捷代码

psvm   publicstatic void main

sout   System.out.println

ctrl+D复制当前行到下一行

变量

变量:可以变化的量

数据类型 + 变量名 = 值

String a = "15";     a就叫变量

所有变量必须先定义后使用0

 

局部变量:在方法里定义,生命周期就在一个大括号里

  public static void main(String[] args) {
         //局部变量:必须声明和初始化值
         int i = 10;
         System.out.println(i);
 }

 

实例变量:类和方法之间定义  从属于对象 ,如果不进行初始化,基本类型默认值为0

 public class Demo04 {
      //实例变量:从属于对象 如果不进行初始化,默认值为0
     // 除了基本类型,其余默认值为null
     // 布尔值默认是false
     String name;
     int age;
     public static void main(String[] args) {
         Demo04 st1 = new Demo04();
         System.out.println(st1.name);
         System.out.println(st1.age);
         // st1.name="董泽超";
        //st1.age=18;
    }

 

类变量:在类和方法之间用static定义 可以直接调用

 public class Demo04 {
     //类变量 static
     static double salary = 2500;
     public static void main(String[] args) {
         System.out.println(salary);
 
    }

变量命名规范

常量

常量:初始化之后就不能变动

final 常量名 = 值

数据类型

数据类型分为基本类型和引用类型

引用类型:类 接口 数组

数据类型拓展

 public class Demo01 {
     public static void main(String[] args) {
         //整数拓展: 进制 二进制0b 八进制 十进制0 十六进制0x
         int i = 10;
         int i2 = 010;//八进制0
         int i3 = 0x10;//十六进制0x   0~9 A~F F=16
         System.out.println(i);
         System.out.println(i2);
         System.out.println(i3);
         System.out.println("---------------------------");
         //浮点数拓展
         //银行业务怎么表示 BigDecimal数学工具类
         //float 有限 离散 有舍入误差 接近但不等于
         //double
         //最好完全使用浮点数进行比较
         //最好完全使用浮点数进行比较
         //最好完全使用浮点数进行比较
         float f = 0.1f;//0.1
         double d = 1.0/10.0;//0.1
         System.out.println(f);
         System.out.println(d);
         System.out.println(f==d);//false
         float f1 = 233222322112213f;
         float f2 = f1+1;
         System.out.println(f1==f2);//true
         System.out.println("---------------------------");
         //字符拓展   所有的字符本质还是数字
         //编码 Unicode 2字节 65536
         char c1 = 'a';
         char c2 = '国';
         System.out.println(c1);
         System.out.println((int)c1);//强制转换int
         System.out.println(c2);
         System.out.println((int)c2);
         //U0000~UFFFF
         char c3 = '\u0061';
         System.out.println(c3);
         System.out.println("---------------------------");
         //转义字符
         // \t制表符加空 \n换行
         System.out.println("Hello\tWorld");
         System.out.println("Hello\nWorld");
         String sa = new String("HelloWorld");
         String sb = new String("HelloWorld");
         System.out.println(sa==sb);
         String sc = "HelloWorld";
         String sd = "HelloWorld";
         System.out.println(sc==sd);
         //对象 从内存分析
         System.out.println("---------------------------");
         //布尔值扩展
         boolean flag = true;
         if(flag==true){ }//小白
         if(flag){ }//大牛
         //默认为真 Less is More!
    }
 }
 

 

数据转换

强制转换 (类型)变量名 高--低
自动转换  低--高

 public class Demo02 {
     public static void main(String[] args) {
         //不同数据类型的数据先转化为同一类型,再运算
         int i = 128;
         byte b = (byte)i;//内存溢出
         double d = i;
         //强制转换 (类型)变量名 高容量--低容量
         //自动转换 低--高
         System.out.println(i);
         System.out.println(b);
         /*
         1.不能对布尔值进行转换
         2.不能把对象类型转换为不相干的类型
         3.在把高容量转换成低容量时,强制转换
         4.转换时候可能存在内存溢出,或者精度问题
          */
         System.out.println((int)23.7);//23
         System.out.println((int)-45.5f);//-45
         char c = 'a';
         int c1 = c+1;
         System.out.println(c1);
         System.out.println((char)c1);
         //操作较大的数时,注意溢出问题
         int money = 1000000000;
         int years = 20;
         int total = money*years;
         long total2 = money*years;
         System.out.println(total);//-1474836480 计算溢出
         System.out.println(total2);//默认是int 转换前就存在问题了
         long total3 = money*(long)years;//先把一个数转换成long
         System.out.println(total3);
 
    }
 }
 

 

运算符

运算有数为long时,结果为long,有double时,结果为double

其他结果为int

关系运算符的结果:正确或者错误 布尔值

与(and)  或(or)  非(取反)

与:一假则假

或:一真则真

非:真变假,假变真

 //与(and)  或(or)  非(取反)
 boolean a = true;
 boolean b = false;
 System.out.println("a && b"+(a && b));//与:一假则假
 System.out.println("a || b"+(a || b));//或:一真则真
 System.out.println("!(a && b)"+(!(a && b)));//非:真变假,假变真

自加自减运算

a++ 先将a赋值给b,再+1

++a 先+1,再赋值给c

 //++ --  自增自减  一元运算符
 int a = 3;
 int b = a++; //a++ 先将a赋值给b,再+1
 System.out.println(a);
 int c = ++a;//++a 先+1,再赋值给c
 System.out.println(a);
 System.out.println(b);
 System.out.println(c);

结果为 4 5 3 5

短路运算

 int c = 5;
 boolean d = (c<4)&&(c++<4);
 System.out.println(d);
 System.out.println(c);

与运算,先判断前面的条件,如果为假,不运行后面的条件了

d为false  c为5

位运算

 A =  0011 1100
 B =  0000 1101
 A&B= 0000 1100   只有都为1时才为1,其余为0
 A|B= 0011 1101   只有都为0时才为0,其余为1
 A^B= 0011 0001   相同为0,不同为1
 ~B = 1111 0010   取反
 效率极高
 << *2
 >> /2
 
 0000 0000   0
 0000 0001   1
 0000 0010   2
 0000 0011   3
 0000 0100   4
 0000 1000   8
 0001 0000   16

2<<3  结果为16

  int a = 10;
  int b = 20;
 //字符串连接符 + , String
     System.out.println(""+a+b);   //1020
     System.out.println(a+b+"");   //30
     //字符串在前面才不会加在一起
 //三元运算符
 //x?y:z 如果x==true,则结果为y,否则为z
 int score = 80;
 String type = score<60?"不及格":"及格";  
 输出及格

 

posted @ 2020-08-19 22:43  狂吃不胖啊  阅读(297)  评论(0)    收藏  举报