1.1 一个简单的Java应用程序
这是我第三遍看这本书,第一遍很仓促,不求甚解且一笔带过,这也和我当时的心态有关系,当时因为刚接手Java所以很多东西都很想快点知道,这种囫囵吞枣的结局就是似懂非懂,然后我遇到了一个带我的师傅开始着手做Java项目,这时候发现Java基础薄弱,开始看这本书的第二遍,第二遍陆陆续续的看的差不多了,以为自己懂了,但是一问还是三不知。缺乏总结还是不行,这是第三遍仔细总结这本书,通过这一遍的总结,应该会有更系统和更全面的认识。以后还会有第四遍第五遍...
public class ClassOne {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
这个程序共有三行,接下来会进行每行说明;
- public 访问修饰符;用于控制程序其他部分对这段代码的权限级别
- class 类;Java程序设计者将程序包含在类中,用class代表这是一个类。Java中的类需要详细解释,这个类我知道的太少了;
- class后面紧跟着这个类的类名。这一点无需过多解释,就像喝水的杯子就叫水杯,茶壶之类的;
- 类里面包含了一个代码块,叫方法。方法也有一个修饰符,代表程序中的其他部分对这个方法的访问权限级别;方法有一个方法名字,代表叫什么名字,方便我们记忆它;还有一个static void ,static代表静态的,为什么会有它呢:它修饰了这个这个方法为静态的,只能用类名来调用,另外在内存中是一个单独的区域保存这个方法,会在对象创建的时候自动初始化。void表示这个方法没有返回值。与static表示静态方法类似,方法还有其它的修饰符,这个地方需要补充;void返回值也可以扩展,方法还是有什么返回值,分别代表什么意思;
- 方法名后面有个括号,里面还有两个部分,代表这个方法接受的参数类型和参数的临时名字;
- 方法体用一个对大花括号括起来了,里面包裹着一条封号结尾的语句,这句的意思是输出“Hello World!”
2.1 Java的注释
//注释掉这一行
/*
注释掉很多行中的第一行
注释掉很多行中的第N行
*/
Java的注释就这两种,注释单行,注释整块;
3.1 数据类型
数据类型,生活中我们会用到很多种,比如整数,小数之类的。Java中的基础数据类型共有8种;
- 整型
整型包括:int,short,long,byte
用于记录整数的物品,比如人,车,船... - 浮点型
浮点型包括:double,float
用于记录带小数的物品,比如钱,长度... - 字符类型
字符类型包括:char
char类型用于表示单个字符,平时用的不多,string用的比较多。 - 布尔类型
布尔类型包括:true,false
表示真或假。
4.1 变量
是不是先讲变量,再讲类型会好一些。我们可以先认识变量,然后变量可以有很多种类型,然后再介绍类型。变量和类型就是一对;
int a = 0;
double b = 1.0;
float c = 2.0;
boolean d = true;
char e = 'A';
变量用来保存数据,Java中变量一定要先申明并初始化再使用,否则编译器会报错。
变量代表变化的量,常量的意思是不变的量。在Java中常量经常用final修饰,变量名大写。final修饰的常量只能被赋值一次,赋值之后就不能再修改。
public class ClassOne {
public static final int CON = 10;
public static void main(String[] args) {
System.out.println(CON);
System.out.println("Hello World!");
}
}
5.1运算符
Java中运算符有下列几种
+(加法)
-(减法)
*(乘法)2*3=6
/(除法) 16%3=5
%(取余) 16%3=1
Java中用于计算的类Math,有丰富的数学运算方法
public class ClassOne {
public static void main(String[] args) {
double x = 4;
double sqrt = Math.sqrt(x);
System.out.println(sqrt);
}
}
- 类型之间可以转换,如int转double,有时候采用强制类型转换会发生精度丢失问题,需要注意。
- 运算符还有一些自增自减,结合运算等...
i++
i--
++i
--i
总结:加在前,使用之前就加;加在后,使用之后再加;
i +=1;等价于 i = i+1;
- 关系和布尔运算符
&&,||
a+b>c;
- 位运算符,位运算符平时使用的很少,暂时就了解吧。
&(and),|(or),~(not),^(xor)
- 枚举类型,这个类型在项目中经常用到。
public class ClassOne {
enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}
public static void main(String[] args) {
System.out.println(Size.LARGE);
System.out.println(Size.valueOf("LARGE"));
}
}
输出:
LARGE
LARGE
Process finished with exit code 0
6.1 字符串
- 字符串用的很多,但是字符串并没有真的去了解透彻它。Java中没有字符串这种类型,它是由字符类型演变而来,Java定义了一个类,命名为String,String用一对双引号括起来表示一个String的类对象,即一个实例。
- 字符串有获取字串的函数substring,字符串还可以拼接(+号拼接),字符串不可变,检测字符串是否相等的函数(equals),空串与null串。
//字符串
public class ClassOne {
public static void main(String[] args) {
String a = "12";
String b = "3";
//字符串拼接
String c = a+b;
//字符串截取子串
String substring = a.substring(0, 1);
//检测字符串是否相等
boolean equals = a.equals(b);
System.out.println(c);
System.out.println(substring);
System.out.println(equals);
}
}
输出:
123
1
false
Process finished with exit code 0
- substring是截取字符串,会新new一个char类型数组,然后采用数组的copy方法将数据copy出来,然后放进数组放回一个新的char数组。
- equals会先比较是否都是String类型的对象,再比较长度是否相等,再比较每一位的值是否相等。
- String类没有提供修改字符串的方法,所以在Java中字符串是不可以被修改的,修改一个字符串远比新建一个字符串的效率低。
- 空串与null。空串就是字符串内容为空即长度为0的字符串,null是String设计的时候允许放入的一个特殊的值。
7.1 输入输出
- 输入输出:涉及的类为:Scanner,和System.out.print(x)
import java.util.Scanner;
public class ClassOne {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("what time is it now?");
String s = scanner.nextLine();
System.out.printf("Oh,thx,it's %s",s);
}
}
输出:
what time is it now?
21:55
Oh,thx,it's 21:55
Process finished with exit code 0
8.1 控制流程
- 块的作用域是块内
- 条件语句:if else
- 循环:while,for,foreach
- 中断控制流程语句:break,continue
9.1 大数值
- Java设计者为了满足用户对大数值的需求,提供了下面两个大数值类型
BigInteger
BigDecimal
//算数运算符无法处理大数值,需要用它自己自带的add和multiply方法。
//将普通数值转为大数值,valueOf
public class ClassOne {
public static void main(String[] args) {
int a = 1;
BigInteger bigInteger = BigInteger.valueOf(a);
BigInteger b = BigInteger.valueOf(a);
BigInteger add = bigInteger.add(b);
}
}
9.1 数组
- 数组是一种数据结构,目的是用来存放同一类型值的集合,(数组是对象,不是由类实例化来,而是由JVM创建,父类就是Object)。数组声明如下:
public class ClassOne {
public static void main(String[] args) {
Integer[] integers = new Integer[3];
int[] ints = new int[3];
boolean[] booleans = new boolean[3];
Boolean[] booleans1 = new Boolean[3];
}
}
- 数值型数组初始化为0,对象数组初始化为null,布尔数组初始化为false;
- 数组的初始化,排序,拷贝,多维数组,不规则数组,作为命令行参数这里就不再写了,不知道的时候翻阅资料就行。
---总结:第一章从一个简单的Java程序开始,带我们熟悉了什么是访问修饰符,什么是类,什么是方法,什么是数据类型,Java中有多少种数据类型,什么是变量,变量的使用方式是什么,怎么初始化,什么是运算符,运算符有优先级,什么是字符串,字符串有什么操作,字串,拼接,相等,字符串不可变(字符串其实是一个类,它没有提供修改字符串的方法),空串与null,输入输出Scanner。流程控制是什么,怎么中止循环,两个大数值,BigInteger 和 BigDecimal,是什么是数组,数组是对象吗,数组是一个集合。复制数组,深拷贝和浅拷贝。浅拷贝就是地址的引用相同了。什么是多维数组以及不规则数组。