JAVA基础入门
环境准备
- win10/ide
- Java环境
零开始搭建项目
1. 创建空项目
- 依次点击:File--->New--->Project
- 选择:Empty Project, 输入项目名,如图所示
2. 创建Module
- 依次点击:File--->New--->Module
- 选择对应JDK等相关信息,如图所示
3. 创建java文件
- 在src文件右键依次点击:New--->Java Class
第一个JAVA程序
- 后续再详细讲解
JAVA注意事项
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的
- 类名:类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,如 HelloWorld
- 方法名:方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。如: FileDown
- 源文件名 :源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口 :所有的 Java 程序由 public static void main(String[] args) 方法开始执行
注释
注释的作用是起到提示作用,注释不会被运行
- 单行注释,两个斜杠表示://
java
public class HelloWorld {
public static void main(String[] args) {
// 这是单行注释
System.out.println("Hello");
}
}
- 多行注释,可以注释一段文字 /* 注释 */
- 输入/*,按回车即可自动补全,再输入注释内容
java
public class HelloWorld {
public static void main(String[] args) {
/*
这是多行注释这是多行注释
这是多行注释这是多行注释
*/
System.out.println("Hello");
}
}
-
文档注释,可以表示这段代码是谁写的,或表达时间等等,一般不使用
-
以下表示代码作者:无涯
java
public class HelloWorld {
/**
* @author 无涯
这是文档注释
*/
public static void main(String[] args) {
System.out.println("Hello");
}
}
标识符
-
JAVA所有组成部份都需要用到名字,如文件名、类名、方法名、变量名都被称为标识符
-
标识符由26个英文字符
- 大小写(a~z或A~Z)
- 数字(0~9)
- 下划线(_)
- 美元符号($)组成
-
不能以数字开头,不能是关键字!!!
-
标识符大小写敏感!!!
关键字
- Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
- Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等
- 关键字不能用作变量名、方法名、类名、包名和参数
- Java关键字共53个
- Java还有3个保留字:true、false、null。它们不是关键字,而是文字。
- 包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。
JAVA数据类型
- JAVA是强数据数型,必须先定义才能使用!!!
- byte(1个字节,8位),short(2个字节,16位),int(4个字节,32位)
- long(8个字节,64位),float(4个字节,32位)
- double(8个字节,64位),boolean(1位),char(2个字节)
基本类型
- 注意:对应的类型,比如接上对应的值 ,比如:int age = "无涯",无涯是字符串,这样就会报错!!!
整型--int
- int age = 40
双精度--double
- double height = 1.75
字符串--String
- 在Java中,一般约定字符串使用双引号来表示,字符使用单引号来表示
- String name = "志超"
- char sex = '男'
布尔值--bloolean
- 布尔值 true或false,且只能小写
java
public class HelloWorld {
public static void main(String[] args) {
// 整数
int age= 40;
// 双精度 占8个字节
double height = 3.145654890123456789;
// 字符串
String name = "无涯";
// char 字符存放单个中文或英文,且只能用单引号 占2个字节
char sex = '男';
// 占4个字节
float num = 3.1234567F;
// 布尔值 true或false,且只能小写
boolean flag=true;
System.out.println(age);
System.out.println(height);
System.out.println(name);
System.out.println(sex);
System.out.println(num);
System.out.println(flag);
}
}
引用类型
数组
创建数组
Java语言使用new操作符来创建数组,语法如下:
java
arrayRefVar = new dataType[arraySize]; //arraySize指数组长度
上面的语法语句做了两件事:
-
- 使用 dataType[arraySize] 创建了一个数组
-
- 把新创建的数组的引用赋值给变量 arrayRefVar
java
dataType[] arrayRefVar = {value0, value1, ..., valuek};
类型转换
- java是强类型语言,在运算过程中需要进行类型转换
- 运算中,不同类型数据先转化同一类型,再进行计算
低------------------------------>高
byte->short->char->int->long->float->double
-
强制类型转换
- 由高到低, 必须进行转换
- 语法:(类型)值,如(byte)num
javapublic class HelloWorld { public static void main(String[] args) { // 定义整型 int num=100; // 将整型的值直接复制给byte类型是不可以,需要进行转换 //byte a= num; 错误写法 byte a=(byte)num; System.out.println(num); System.out.println(a); } }
-
自动类型转换
- 由低到高
java
public class HelloWorld {
public static void main(String[] args) {
// 定义整型
int num=100;
// double是小数,所以有尾数
double a=num;
System.out.println(num);
System.out.println(a);
}
}
注意
- 不能对布尔值进行转换
- 不能把对象转换为不不相干的类型
- 转换的时候可能存在内存溢出问题
- 高转低时,需要强制转,反之不需要
变量
- 变量是什么?是可以变化的量!!!
- JAVA是强类型语言,每个变量都必须声明类型
- 要素包括:变量名、变量类型、作用域
- 不建议一行定义同类型多个值!!!如:int a,b,c
作用域
类变量
- 类变量,可以直接进行调用,不需要进行实例化
- 语法: static 类型 变量名
- 学习过程中,变量都加上static方便调用
实例变量
- 实例变量从属于对象,所以使用前必须要进行实例化对象才可以进行调用
- 实例变量,从属于对象,即需要实例化对像Demo8这个类之后才能调用
- 实例变量没有定义值,会变成这个默认值
- int默认值: 0
- String默认值: null
- 布尔值默认: false
局部变量
常量
- 初始化后不能变化的值,不会变动的值
- 常量是一种特殊的变量,它的值被设定后,在程序后续运行过程中不允许被改变
- 常量一般用大写!!!
- 语法
- final double 变量名 = 值
变量规范
-
变量、方法、类名遵循: 见名其义,就是一看到就知道大概啥意思
-
不使建议使用拼音或中文当做变量名:name mingzi(错误)
-
类名: 首字母大写和驼峰原则: Hello,HelloWorld
-
类成员变量: 首字母小写和驼峰原则: firstDay
-
局部变量:首字母小写和驼峰原则 firstName
-
常量:大写字母和下划线: MAX_BIG
-
方法名: 首字母小写和驼峰原则: run(),runRun()
运算符
- 表格中的实例假设整数变量A的值为10,变量B的值为20
加减乘除
- 加号另外的一个作用是:连接作用
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A -- B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假, 必须同类型才能进行计算
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
自增/自减
- 代码调式的方法,可以看出代码运行过程
- --的过运算过程和++一致
赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
运算符优先级
- 当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题
- 在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
包机制
- 包名不是凭空定义,一般利用公司域名倒置作为包名
条件语句
if
if...else
if...else if ...else
if 语句后面可以跟 else if...else 语句,这种语句可以检测到多种可能的情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
- if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
循环语句
while
- 语法规则及说明:只要布尔表达式为 true,循环就会一直执行下去。
- while后面要带括号----->()
java
while( 布尔表达式 ) {
//循环内容
}
- 条件满足时运行,直接到满足时跳出循环
- 如果条件一开始就不满足就完全不会运行代码
do...while
-
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次
-
do...while 循环和 while 循环相似,不同的是,do...while 循环至少会执行一次。
注意:
- 布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。
- 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
- while后面要带分号----->;
for循环
- 注意括号内要有分号隔开,最后更新不需要分号
java
for(初始化; 布尔表达式; 更新) {
//代码语句
}
break
- 跳出整个循环,继续下面的代码运行
continue
- 跳出当前循环,继续下一次循环
方法
方法的优点
- 使程序变得更简短而清晰, 有利于程序维护,
- 可以提高程序开发的效率
- 提高了代码的重用性
方法定义
- **修饰符:**修饰符为可选,定义了该方法的访问类型。
- 返回值类型 :
- 方法定义了返回值类型,则必须带return
- 如果没有返回值,即void,则不需要带return
- **方法名:**是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数:
- 定义参数,该参数称之为:形参
- 方法被调用时,传递值给参数, 这个值被称为实参
- **方法体:**方法体包含具体的语句,定义该方法的功能
方法调用
- 当方法返回一个值的时候,方法调用通常被当做一个值(因为方法有返回值,需要有变量来接收)
- 当方法返回值是void,方法一定是一条语句
方法重载
- 重载是在一个类中,有相同函数名,但形参不同的函数
- 方法重载规则:
- 方法名必相同---强制
- 参数列表不同(个数不同或类型不同,参数排列顺序不同)---强制
- 方法返回值可相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
- 方法相同时,编译器会根据调用方法的参数个数去匹配正确的方法。如果匹配失败则编译器报错
不定长传参
- 就是不知道要传入多少个参数(可能没有,可能是1个或者多个),这个时候就要用到不定长传参
- 不定长要写在参数列表最后面