一、基础

  1. 在一个Java程序中,你总能找到一个类似:
public class Hello {
    ...
}

的定义,这个定义被称为class(类),这里的类名是Hello,大小写敏感,class用来定义一个类,public表示这个类是公开的,publicclass都是Java的关键字,必须小写,Hello是类的名字,按照习惯,首字母H要大写。而花括号{}中间则是类的定义。

​ 2. 类的定义中,我们定义了一个名为main的方法:

    public static void main(String[] args) {
        ...
    }

方法是可执行的代码块,一个方法除了方法名main,还有用()括起来的方法参数,这里的main方法有一个参数,参数类型是String[],参数名是argspublicstatic用来修饰方法,这里表示它是一个公开的静态方法,void是方法的返回类型,而花括号{}中间的就是方法的代码。

​ 3. Java规定,某个类定义的public static void main(String[] args)是Java程序的固定入口方法,因此,Java程序总是从main方法开始执行。

​ 4. 一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;

​ 使用javac可以将.java源码编译成.class字节码;

​ 使用java可以运行一个已编译的Java程序,参数是类名。

二、从编程中获取的

  1. "\\"是转义字符,输出结果只会是一个"\"
  2.  //"Unicode"也可表示字符型常量
            //用Unicode输出自己的名字
            char c3='\u66f9';
            char c4='\u950b';
            System.out.println(c3);
            System.out.println(c4);
  3. //自动类型转换
            short s=1;
            int i;
            //自动类型转换:short类型转换成int类型(转换后的数据类型的表示范围比转换前的大)
            i=s;
            System.out.println("i="+i);
    
            //强制类型转换:转换后的数据类型表示的范围比转换前的小
            double d=1.333;
            float f;
            //把double类型的数据强制转换成float类型,要在范围比较大的那个变量前面加(范围小的类型)
            f=(float)d;
  4. "++":    a++表示先做赋值操作,再自增
            ++a表示先自增,后做赋值操作
            "--"一样
  5. “&&”与  前后两个数必须都是true才返回true,否则返回false
    “&”不短路与,即执行了(5>3)之后还需执行(4>5),&&则不用;一般用&&短路,原因:效率高
        
    “||”或  只要两个操作数中有一个true就返回true,否则就返回false
    “|”不短路或  与不短路与基本一样
        
    “!”非  如果操作数为true,返回false;否则返回false
        
    “^”异或  当两个操作数不相同时返回true,相同时返回false
        
    三目运算符:(表达式)?表达式为true返回值A:表达式为false返回值B;
  6. //定义一个系统输入对象
    Scanner scanner=new Scanner(System.in);
    int n=scanner.nextInt();//获取用户输入
  7. //while 是先判断在执行,do...while 是先执行再判断
    //while不一定会执行,但是do...while必定会执行一次
  8. //定义一个数组两种方式
            int []arr;
            int arr2[];
    
    //定义一个数组,并且静态初始化
            int arr[]=new int[]{1,2,3};
    
    //定义一个数组,然后动态初始化,长度是3
    //int 类型默认全是0
            int arr[]=new int[3];
    
    //二维数组的静态初始化
            int [][]arr=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
    
    //二维数组的动态初始化
            int [][]arr2=new int[3][3];
  9. //定义一个person类的对象zhangsan
            Person zhangsan;
    //实例化对象
            zhangsan=new Person();//关键字new
    //给对象赋值
            zhangsan.name="张三";
            zhangsan.age=18;
            zhangsan.speak();//调用上面的speak方法
  10. //方法的重载注意点:返回类型不同不能视为方法的重载
            int add(int a, int b){
            System.out.print("方法一:");
            return a+b;
        }
    
    //方法的重载:参数的个数不一样;
            int add(int a,int b,int c){
            System.out.print("方法二:");
            return a+b+c;
        }
    
    //方法的重载:参数的类型不一样
            int add(int a,String b){
            System.out.print("方法三:");
            return a+Integer.parseInt(b);
            //Integer是int对应的类的静态方法,parseInt在这里是把字符串转换成int类型;
  11. Second second=new Second();
    //调用普通方法  对象.方法
    second.fun1();
    //调用静态方法  类名.方法
    Second.fun2();
    //调用静态方法  对象.方法
    second.fun2();
  12. //String属性默认值是null;
    //int属性默认值是0;
    //默认构造方法,无返回值,其名字与类名一致;
    
    //有参数的构造方法(也可以说是构造方法的重载)初始化
        First(String name2, int age2){
            name = name2;
            age = age2;
            System.out.println("有参数的构造方法");
        }
        
    //假如没有构造方法,系统会自动生成一个默认的无参的构造方法,假如有构造方法,系统不会自动生成构造方法;
  13. //this关键字,this表示当前对象,作用1.使用this调用本类中的属性;2.使用this调用构造方法;
    
    this();//如果有参数就在括号内加参数;调用构造方法;
    this.name = name;//调用本类中的属性