一、基础
- 在一个Java程序中,你总能找到一个类似:
public class Hello {
...
}
的定义,这个定义被称为class(类),这里的类名是Hello
,大小写敏感,class
用来定义一个类,public
表示这个类是公开的,public
、class
都是Java的关键字,必须小写,Hello
是类的名字,按照习惯,首字母H
要大写。而花括号{}
中间则是类的定义。
2. 类的定义中,我们定义了一个名为main
的方法:
public static void main(String[] args) {
...
}
方法是可执行的代码块,一个方法除了方法名main
,还有用()
括起来的方法参数,这里的main
方法有一个参数,参数类型是String[]
,参数名是args
,public
、static
用来修饰方法,这里表示它是一个公开的静态方法,void
是方法的返回类型,而花括号{}
中间的就是方法的代码。
3. Java规定,某个类定义的public static void main(String[] args)
是Java程序的固定入口方法,因此,Java程序总是从main
方法开始执行。
4. 一个Java源码只能定义一个public
类型的class,并且class名称和文件名要完全一致;
使用javac
可以将.java
源码编译成.class
字节码;
使用java
可以运行一个已编译的Java程序,参数是类名。
二、从编程中获取的
"\\"是转义字符,输出结果只会是一个"\"
//"Unicode"也可表示字符型常量 //用Unicode输出自己的名字 char c3='\u66f9'; char c4='\u950b'; System.out.println(c3); System.out.println(c4);
//自动类型转换 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;
"++": a++表示先做赋值操作,再自增 ++a表示先自增,后做赋值操作 "--"一样
“&&”与 前后两个数必须都是true才返回true,否则返回false “&”不短路与,即执行了(5>3)之后还需执行(4>5),&&则不用;一般用&&短路,原因:效率高 “||”或 只要两个操作数中有一个true就返回true,否则就返回false “|”不短路或 与不短路与基本一样 “!”非 如果操作数为true,返回false;否则返回false “^”异或 当两个操作数不相同时返回true,相同时返回false 三目运算符:(表达式)?表达式为true返回值A:表达式为false返回值B;
//定义一个系统输入对象 Scanner scanner=new Scanner(System.in); int n=scanner.nextInt();//获取用户输入
//while 是先判断在执行,do...while 是先执行再判断 //while不一定会执行,但是do...while必定会执行一次
//定义一个数组两种方式 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];
//定义一个person类的对象zhangsan Person zhangsan; //实例化对象 zhangsan=new Person();//关键字new //给对象赋值 zhangsan.name="张三"; zhangsan.age=18; zhangsan.speak();//调用上面的speak方法
//方法的重载注意点:返回类型不同不能视为方法的重载 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类型;
Second second=new Second(); //调用普通方法 对象.方法 second.fun1(); //调用静态方法 类名.方法 Second.fun2(); //调用静态方法 对象.方法 second.fun2();
//String属性默认值是null; //int属性默认值是0; //默认构造方法,无返回值,其名字与类名一致; //有参数的构造方法(也可以说是构造方法的重载)初始化 First(String name2, int age2){ name = name2; age = age2; System.out.println("有参数的构造方法"); } //假如没有构造方法,系统会自动生成一个默认的无参的构造方法,假如有构造方法,系统不会自动生成构造方法;
//this关键字,this表示当前对象,作用1.使用this调用本类中的属性;2.使用this调用构造方法; this();//如果有参数就在括号内加参数;调用构造方法; this.name = name;//调用本类中的属性