一、Java编译到运行
对于一个.Java
文件,在控制台使用javac 文件命.java
指令对其进行编译生成一个字节码文件(实际上是一个二进制文件),在再通过java 文件名
指令运行该Java文件。
所有Java运行的文件都运行到了JVM(java virtual Machine
当中)。在学习Java之前都会安装JDK(java development kit)
即Java开发工具,在这款工具里包含了JRE(java runtime environment)
即Java运行环境,其中又包括了JVM
,这也是Java可以在全平台设备上运行的原因,因为它的运行都发生在java自己的虚拟机上。
二、main方法示例:
public class class_one_practice {
public static void main(String[] args) {
System.out.println("Hello,Java");
}
}
①在一个Java文件中,如果有一个public class
这样一个类,则类名一定要和文件名相同。即一个Java文件只能有一个public class
②类中带有一个或多个方法。方法必须在类的内部声明。
③与C语言的printf
不同,Java所使用的System.out.printfln
会输出括号内容同时进行换行,并不用加\n
。
④string[] args
这个数组是Java运行时的命令行参数。当我们求数组长度是可直接使用args.length
来得到数组长度。
⑤一个类class
会生成一个字节码文件,Java是随用随取的的。
三、整形变量
public static void main(String[] args) {
int num = 10; //定义一个整型变量
System.out.println(num);
}
①在Java中,一个int变量都占4个字节,与操作系统无关。(4个字节为32位,即可以取到-2^31 ~ 2^31-1
)
②在Java中,没有无符号的int型,默认所有类型都是有符号的,即最高位都是符号位。
查看Java中的整型数据范围
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
①Integer
是int
类型的plus
,即理解为int的包装类。
②当运算结果超出int最大范围后,会出现溢出,即System.out.println(Integer.max_value+1)
将会输出的是-2^31
四、长整形变量
public static void main(String[] args) {
long num = 10L;
System.out.println(num);
}
①在初始化时,使用long num = 10;
也可以,但这样其实10本身类型是int,这里我理解是进行了一次类型提升,所以直接定义为long num = 10L;
加上L
会更好一些。
②Java中long类型占8个字节,表示范围是-2^63 ~ 2^63-1
五、双精度浮点型变量
public static void main(String[] args) {
double num = 1.0;
System.out.println(num);
double num2 = 1.1;
System.out.println(num2 * num2); //输出为:1.2100000000000002
}
Java和c语言一样,都是尝试在有限的内存空间内表示可能无限的小数,所以必定粗在精度误差。
六、单精度浮点型变量
public static void main(String[] args) {
float num = 1.0f; //也可以写作1.0F
System.out.println(num);
}
num = 1.0
这种默认1.0
会是双精度类型,所以如果要确保单精度类型则需要加上F,即num = 1.0f
。但工程上一般都是用double因为float表示的数据精度范围较小。
七、字符类型变量
public static void main(String[] args) {
char ch = '周';
System.out.println(ch); //输出: 周
char ch1 = 6666;
System.out.println(ch1); //输出:ᨊ
}
①在Java中,char
类型占用两个字节,即16位,所以它总共可以表示2^16 = 65 536
个字符,所以可以用它来表示汉字。
②在Java中使用单引号 + 单个字母
即’a’,与c语言相同都是表示字符的面值,Java中使用的是Unicode字符集,此字符集中包含了ASCII码表的255个字符。
③当我们不在IntelliJ IDEA
编译器中执行上段代码而是在cmd控制台执行时,可能会出现报错,提示错误:未结束的字符文字
这是因为当我们使用javac
指令进行编译时,默认是以GBK编码
来进行编译,所以我们需要使用javac -encoding UTF-8 文件名.java
。
八、字节类型变量
public static void main(String[] args) {
byte value = 0;
System.out.println(value);
}
字节类型,只占1个字节,8个bit位,其数字取值范围是-128 ~ 127
。
九、短整型变量
public static void main(String[] args) {
short value = 0;
System.out.println(value);
}
短整型变量占2个字节,16个bit位,其数字数值范围是-2^15 ~ 2^16
十、布尔类型变量
public static void main(String[] args) {
boolean value = true;
System.out.println(value);
}
①boolean类型的变量只有两种取值true
表示真,false
表示假,且boolean与int类型不能相互转换,这点与C语言不同。
②对于boolean类型所占字节数在JVM
规范里并未明确规定,但目前有博客观点认为是占1个byte(字节)
也有认为占1个bit位
。
十一、字符串类型变量
public static void main(String[] args) {
String name = "zhoucheng";
System.out.println(name);
}
①使用单引号引起的是一个字符,双引号引起的是一个字符串。
②String
为引用类型,数据类新基本可以分为下表,我们需要着重记住的的是两类特殊包装类即char ⇒ Character
和Int => Integer
③字符串+
操作,表示字符串的拼接
public static void main(String[] args) {
String a = "Hello";
String b = "World";
String c = a + b;
System.out.println(c); //输出为:HelloWorld
int q = 10;
int w = 20;
System.out.println("a = " + q + ",b =" + w); //输出为:a = 10,b =20
}
十二、类型转换
int和long混合运算
public static void main(String[] args) {
int a = 10;
long b = 20;
int c = a + b; //这样会编译出错,这里将long转换成int会丢失精度
long d = a + b; //这样则编译通过
}
当int
和long
混合运算时,int会提升成long,且得到结果仍为long型,若非要用int类型来接收,则要使用强制类型转换。
byte和byte运算
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = (a + b); //编译不通过
byte d = (byte)(a + b); //编译通过
System.out.println(d);
}
虽然a和b都是byte类型,但是在计算a+b时计算机会先将a和b提升成为int型,则计算结果为int型。这是因为计算机的CPU通常按照4个字节为单位从内存中读写数据。为了硬件上实现方便,诸如byte和short这种低于4个字节的类型(仅对数字运算来说),会先提升为int再计算。
int转换成String
public static void main(String[] args) {
int num = 10;
String str1 = num + ""; //方法1
String str2 = String.valueOf(num); //方法2
System.out.println(str1);
System.out.println(str2);
}
String转换成int
public static void main(String[] args) {
String str = "100";
int num = Integer.parseInt(str);
System.out.println(str);
}
补充:
类中有几中变量,分别是局部变量,定义在类方法里的变量;
实例变量,在方法外而在类里声明定义的变量,有时也叫成员变量;
类变量,用关键字static声明的实例变量。
局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销,局部变量在使用前被初始化。