java学习第一天
一、idea的配置和使用
1、下载安装
- 根据自己电脑勾选配置, 然后下一步
2、基础设置
- 全局设置
3、安装插件
4、JDK环境的配置
5、创建JavaSE工程
- 在src中写代码
- 运行代码
二、Java语言开发环境
- Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。
- JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。
- JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具
- 三者关系: JDK > JRE > JVM
- 为了开发方便,我们想在任意的目录下都可以使用JDK的开发工具,则必须要配置环境变量,配置环境变量的意义 在于告诉操作系统,我们使用的JDK开发工具在哪个目录下
三、HelloWorld入门程序
- Java程序开发三步骤:编写、编译、运行
- javac.exe: 编译器
- java.exe: 解释器
- 编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们 所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
- 运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
- main方法:称为主方法。写法是固定格式不可以更改。main方法是程序的入口点或起始点,无论我们编写多 少程序,JVM在运行的时候,都会从main方法这里开始执行。
四、常量
五、数据类型
Java的数据类型分为两大类:
- 基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 。
- 引用数据类型:包括 类 、 数组 、 接口
基本数据类型
- 四类八种基本数据类型:
- 练习
public class Variable {
public static void main(String[] args) {
// 定义字节型变量
byte b = 100;
System.out.println(b);
// 定义短整型变量
Shorts s = 1000;
System.out.printtln(s);
// 定义整型变量
int i = 123456;
System.out.printtln(i);
// 定义长整型变量
ong l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量
float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
}
}
- long类型:建议数据后加L表示。
- float类型:建议数据后加F表示。
- 变量名称:在同一个大括号范围内,变量的名字不可以相同。
- 变量赋值:定义的变量,不赋值不能使用。
六、数据类型转换
1、自动转换
- 转换规则: 将 取值范围小的类型 自动提升为 取值范围大的类型。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
2、强制转换
转换规则:将 取值范围大的类型 强制转换成 取值范围小的类型 。
// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.5;
Java中,整数使用以上运算符,无论怎么计算,也不会得到小数。
- 浮点转成整数,直接取消小数点,可能造成数据损失精度。
- int 强制转成 short 砍掉2个字节,可能造成数据丢失。
// 定义s为short范围内最大值
short s = 32767;
// 运算后,强制转换,砍掉2个字节后会出现不确定的结果
s = (short)(s + 10);
七、运算符
1、算数运算符
+, -, *, /, %, ++, --
2、赋值运算符
=, +=, -=, *=, /=, %=
3、比较运算符
==, <, >, <=, >=, !=
4、逻辑运算符
&&, ||, !
5、三元运算符
int i = (1==2 ? 100 : 200);
八、方法入门
注意事项:- 方法必须定义在一类中方法外
- 方法不能定义在另一个方法的里面
public class Demo {
public static void main(String[] args){
}
//正确写法,类中,main方法外面可以定义方法
public static void method(){}
}
// 错误写法
public class Demo {
public static void main(String[] args){
//错误写法,一个方法不能定义在另一方法内部
public static void method(){}
}
}
练习
- 下面程序有问题吗
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点, 也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2;
byte b4=b1 + b2;
System.out.println(b3);
System.out.println(b4);
}
分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没 有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。 反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什 么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。
tips:
<font color="red">**注意事项**</font> // 红色:注意事项
<font color="green">**正确代码**</font> // 绿色:正确代码
<font color="cyan">**强调**</font> // 蓝色:强调