文章目录
Java—基础语法
1. Java概述
- Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
- 应用领域:Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后台处理大数据的存储、查询、数据挖掘等也有很多应用。
2. 基本概念
JVM,JRE与JDK
- JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。Java语言的跨平台特性是由JVM实现的。
- JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库。
- JDK (Java Development Kit):是Java程序开发工具包,提供了 java 的开发环境和运行环境。
- 具体来说 JDK 其实包含了 JRE,同时还包含了 java 程序编译、打包、调试和分析的工具。
简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。
3. 数据类型
Java的数据类型分为两大类:
- 基本数据类型:包括整数、浮点数、字符、布尔。
- 引用数据类型:包括类、数组、接口。
每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”。
在 Java 中一切都被视为了对象,但是我们操作的标识符实际上是对象的一个引用(reference)。
基本类型
四类八种基本数据类型:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -2的31次方~2的31次方-1 |
长整型 | long | 8个字节 | -2的63次方~2的63次方-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 2个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true,false |
定义所有基本数据类型的变量,代码如下:
//定义字节型变量
byte b = 100;
//定义短整型变量
short s = 1000;
//定义整型变量
int i = 123456;
//定义长整型变量
long l = 12345678900L;
//定义单精度浮点型变量
float f = 5.5F;
//定义双精度浮点型变量
double d = 8.5;
//定义布尔型变量
boolean bool = false;
//定义字符型变量
char c = 'A';
类型转换
- 自动类型转换
当运算符两边出现不一致的类型时,会自动转换成较大的类型。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
- 强制类型转换
double a = 1.0;
double b = 2,0
int i = (int)(a/b);
// 强制类型转换的优先级高于四则运算
- 注意:浮点转成整数,直接取消小数点,可能造成数据损失精度。int 强制转成short 砍掉2个字节,可能造成数据丢失。
运算符
-
算术运算符
- 自增自减运算:
++
、--
+
符号在遇到字符串的时候,表示连接、拼接的含义
- 自增自减运算:
-
赋值运算符:=
-
比较运算符
Java语言提供6种关系运算符(> < <= >= == != )
- 逻辑运算符
运算符 | 描述 |
---|---|
! | 逻辑非 |
&& | 逻辑与 |
|| | 逻辑或 |
- 条件运算符(三元运算符)
count = (count>20)? cout-10: count
//等价于
if( cout>20 )
count = count-10;
else
count = count+10;
数组
数组概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
- 定义数组
// 默认数组内元素值为0
int[] arr = new int[3]; // 动态初始化(指定长度)
int[] arr = new int[]{1,2,3,4,5}; // 静态初始化(指定内容)
int[] arr = {1,2,3,4,5}; // 省略的静态初始化
// 左侧的中括号:代表是一个数组
// 右侧的new:代表创建数组的动作
-
访问数组:数组名[索引]
tips: 直接打印数组名称,返回的是哈希地址值 -
基本操作
public class Array {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println("数组:");
printArray(arr);
System.out.println("最大值:" + getMax(arr));
arr = reverseArray(arr);
System.out.println("逆序:");
printArray(arr);
}
// 数组遍历输出
public static void printArray(int[] arr) {
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
// 找数组最大值
public static int getMax(int[] arr) {
int max = 0;
for(int i = 0; i < arr.length; i++) {
if(max < arr[i]) {
max = arr[i];
}
}
return max;
}
// 数组反转
public static int[] reverseArray(int[] arr) {
for (int i = 0; i < arr.length/2; i++) {
int tmp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = tmp;
}
return arr;
}
}
3. 语法结构
- 顺序结构(略)
- 选择结构
- If语句
- switch语句
- 循环结构
- while语句
- do-while语句
- for语句
- Break语句用于跳出循环,continue用于结束本次循环。
选择语句
//C提供了三种形式的if语句
if( flag ) {
// statement
}
if( a != 1) {
// statement 1
}else {
// statement 2
}
if( a ==1 ) {
// statement 1
}
else if( a == 2) {
// statement 2
…
}else {
// statement n
}
int i;
Switch( i )
{
case 1:
// expression 1
break;
case 2:
// expression 2
break;
…
case n:
// expression n
break;
default:
// expression n+1
break;
}
循环语句
while( ture )
{
// while语句先判断表达式后执行语句
}
do{
// do-while语句先执行语句后判断表达式
} while ( true )
for( i=0; i<10; i++ )
{
if( i==2 )
{
continue;
}
if( i==4 )
{
break;
}
}
4. 程序结构
我们在学习运算符的时候,都为每个运算符单独的创建一个新的类和main方法,我们会发现这样编写代码非常的繁琐,而且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。
- 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
方法
- main方法:称为主方法。写法是固定格式不可以更改。main方法是程序的入口点或起始点,无论我们编写多少程序,JVM在运行的时候,都会从main方法这里开始执行。
public static void main(String[] args) {
//调用定义的方法method
method();
}
//定义方法,被main方法调用
public static void method() {
System.out.println("自己定义的方法,需要被main调用运行");
}
方法重载
- 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
- 参数列表:个数不同,数据类型不同,顺序不同。
- 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
public class MethodOverload {
public static void main(String[] args) {
myPrint(100);
myPrint("Hello");
}
// 方法重载
// 模拟输出语句中的println 方法效果,传递什么类型的数据就输出什么类型的数据
public static void myPrint(byte num){System.out.println(num);}
public static void myPrint(short num){System.out.println(num);}
public static void myPrint(int num){System.out.println(num);}
public static void myPrint(long num){System.out.println(num);}
public static void myPrint(float num){System.out.println(num);}
public static void myPrint(double num){System.out.println(num);}
public static void myPrint(char c){System.out.println(c);}
public static void myPrint(boolean is){System.out.println(is);}
public static void myPrint(String str){System.out.println(str);}
}
数组与方法
- 数组作为参数
- 数组作为返回值,可以返回多个值
public class ArrayReturn {
public static void main(String[] args) {
int[] result = calculate(10, 20, 30);
System.out.println("总和:" + result[0]);
System.out.println("平均数:" + result[1]);
}
public static int[] calculate(int a, int b, int c) {
int sum = a + b + c; // 总和
int avg = sum / 3; // 平均数
int[] array = { sum, avg };
return array;
}
}
5. JDK环境安装
Java环境安装,JDK+IDE就够了,这里说JDK的安装
- 下载JDK压缩包
- 配置环境变量
- 设置JAVA_HOME
解压jdk的目录 - 设置CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar - 在path中加入两个新的配置
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
- 设置JAVA_HOME
tips:用压缩包的形式可以,多版本切换,配只需要修改环境变量