java基础知识一

1、Java语言概述

1、java的出现标志着真正的分布式系统的到来

2、Java与c++的区别

2.1、全局变量

Java中没有全局变量,使用类中的公共的静态变量作为这个类的全局变量

2.2、指针

Java中没有任何在指针操作

2.3、条件转移指令

Java中没有goto语句,通过异常处理机制try-catch-finally来代替

2.4、内存管理

Java拥有内存回收机制,保证了系统资源的完整性,能够自动回收长时间不使用的文件

2.5、数据类型的一致性

对数据类型的位数分配是固定的

2.6、类型转换

在Java语言中对对象的处理进行严格的相容性检查,防止不安全的转换

2.7、不支持

Java不支持头文件、结构、联合、预处理(宏定义)

3、特点

简单性。完全面向对象、平台无关性、安全性(严密的语法检查、内存自动管理),多线程

4、编译与解释

首先编写Java源程序(后缀名为.java),然后进行编译(检查语法格式),会生成一个字节码文件,字节码文件可以在任何装有Java虚拟机的平台运行(保证了其平台无关性)

5、基本语法成分

标识符:由字母、数字、下划线、$组成,不能以数字开头

6、补充

一个Java源文件内可以有多个类,但至多有一个public类,且public类的源文件名必须与这个类的名字相同,若没有public类,则源文件名随意

2、Java语言基础

1、数据类型简介

1.1、基本数据类型

​ 1、整数类型:byte,short,int,long

​ 2、浮点类型:float,double

​ 3、字符类型:char

​ 4、布尔类型:boolean

1.2、引用数据类型

数组、类、接口

1.3、补充

基本数据类型的变量保存数据值,引用数据类型的变量保存地址

1.4、各数据类型的对比
数据类型 关键字 所占字节
布尔型 boolean 无明确规定
字节型 byte 1个字节
短整型 short 2个字节
整型 int 4个字节
长整型 long 8个字节
字符型 char 2个字节
单精度浮点型 float 4个字节
双精度浮点型 double 8个字节

2、常量

2.1、整型常量

Java语言的整型常量默认为int类型

2.2、实型常量

eg.1e3、1.e3、.e3

浮点型实型常量不带后缀默认为双精度常量

2.3、布尔常量

true,false

2.4、字符型常量

用单引号‘’括起来

2.5、字符串常量

用双引号" "括起来

3、变量

// 变量格式
		数据类型符 变量列表 [=初始值]
//eg.
	int i;
	long k = 1;
	double x , y = 1;

如果变量未初始化就进行输出,会编译错误

变量说明确定了:该变量占用内存单元的数量、数据在内存的表示方式、数据的取值范围

4、符号常量

// 定义形式
[static] final 数据类型 标识符 [= 常量]

最终变量:只能赋值一次

最终变量 != 常量

5、数据的输入

// 1.一次只能读入一个字节
System.in.read()
// 2.JOptionPane.showInputDialog
对话框界面,返回结果为String类型
// 3.Scanner 类
Scanner scan = new Scanner(System.in)

6、数据类型的转换

java可以自动完成级别低的变量向级别高的变量的转换

但级别高的变量向级别低的变量转换时,需要使用显示类型转换运算

byte、short、char在一起运算时,会首先转换为int类型进行运算

byte b1 = 5;
short s1 = 6;
short s2;
s2 = b1 + s1; // 产生错误

复合运算“+=、-=、*=、/=、%=” 会自动进行类型转换,不需要强制类型转换

short s = 3;
int t = 5;
s += t;	   //正确
s = s + t; //错误

7、补充

%运算符其操作数可以是浮点数

+可用来连接两个字符串

System.out.print(1+1+"6")	//26
System.out.print("6"+1+1)	//611

整数被0除会产生异常,浮点数被0除将会得到无穷大或NaN

3、Java语言控制结构

1、关系运算符

名称 符号
大于 >
大于等于 >=
小于 <
小于等于 <=
等于 ==
不等于 !=

返回boolean类型的数据

2、逻辑运算符

名称 符号 说明
!真为假,!假为真
&& 两个都为真时为真,否则为假
|| 有一个为真则真
异或 ^ 两个数不同时为真

当&&第一个变量为假时,会直接跳出该条件判断,不会进行第二个变量的计算

当||第一个变量为真时,会直接跳出该条件判断,不会进行第二个变量的计算

3、顺序结构

自上而下

4、分支结构

4.1、格式
// if-else / if-else if……else 语句
if(逻辑表达式、条件判断)
	执行语句
else if(判断条件)
    执行语句
………………
else 
    执行语句
    
// switch 语句
switch(表达式)
{
        case 常量表达式1;语句序列1;break;
        case 常量表达式2;语句序列2;break;
        case 常量表达式3;语句序列3;break;
        ……
        default:语句序列
}
/*
switch 的语句判断条件可以接受 byte、short、int、char、String、枚举类型
各常量表达式的值不能相同,不能包含变量贺函数调用
switch 会顺序查找,知道找到第一个匹配的case值,开始顺序执行后面所有的语句,直到遇到break
*/

if : 用于对一个表达式的值进行判断

switch : 用于对几个确定的值进行判断

4.2、条件运算符(三目运算符)
逻辑表达式1 ? 表达式2 : 表达式3
    
// eg.
max = ( x > y ) ? x : y;  // 返回较大的值

5、循环结构

5.1、while循环
//语句格式
while(逻辑表达式)
{
 	循环体   
}
5.2、do……while循环
//语句格式
do{
    循环体;
}
while(判断条件);
5.3、for循环
// 语句格式
for(表达式1;表达式2;表达式3)
{
    语句块;
}
5.4、for each循环
//语句格式
for(变量:集合)
{
   	循环体
}
// eg.
int[] a = new int[11];
for(int element:a)
{
    System.out.println(element);
}
5.5、结束循环语句
类型 说明
break 结束此循环,跳出循环体
continue 结束本次循环,进行下一次循环

4、Java数组和方法

1、数组概念

数组是具有相同数据类型有限个同名变量的有序集合,每一个数据被称为该数组的元素

下标从0开始

通过数组名加数组下标来使用数组中的数据

2、定义一个数组

2.1、声明数组
//声明数组的格式
// 1
数组元素类型 数组名[];
int a[];
// 2
数组元素类型[] 数组名;
int[] a;
2.2、创建数组(分配内存空间)
//格式
// 1
数组元素类型[] 数组名 = new 数组元素类型[数组元素个数];
int[] a = new int[10];
// 2
数组元素类型[]  数组名;
数组名 = new 数组元素类型[数组元素个数]
int[] a;
a = new int[10];
2.3、补充

声明数组是在栈中分配一个地址,仅仅是给出了数组名和元素的数据类型,无法正常使用,此时调用会报错

必须要在堆空间中为其分配一个空间,即使用new申请一个空间(在堆中的数据有默认值)

在栈中的数据没有默认值

变量可以出现的地方数组元素都可以出现

可以使用 数组名.length 得到数组中元素的个数

3、注意

必须先定义一个数组(声明+创建)才能使用

数组是一个指针,指向一个堆的空间

4、数组初始化

4.1、静态初始化
// 在定义数组的同时就位数组元素分配空间并赋值
int[] a = {3,5,8};  //不能指定数组的大小
4.2、动态初始化
// 数组声明和为数组元素分配空间并赋值的操作分开进行
// 方法一
int[] a = new int[3];
a[0] = 3, a[1] = 5, a[2] = 8;
// 方法二
int[] a = new int[]{3,5,8}; //此方法无法指定长度

5、二维数组

1、不要求二维数组的每一维的大小相同
// eg.
int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[7];
2、Java中直接支持多维数组,是通过对一维数组的嵌套形式来声明的

java基础知识一_第1张图片

public class Main {
    public static void main(String[] args) {
        float[] a = new float[12];
        int [][] b = new int[3][6];
        System.out.println(a.length); //12
        System.out.println(b.length); //3
        System.out.println(b[0].length); //6
    }
}

6、方法

6.1、概念

实现特定功能、可被调用并能返回值的程序段

避免了重复性操作、有利于模块化设计

6.2、方法声明
// 格式
[修饰符] [static] 返回值类型 方法名([参数列表]){
    语句序列;
    [return [返回值]];
}
6.3、静态方法

static修饰的方法

6.4、关于引用传递和值传递

Java规定,所有类型的参数传递都是“值传递”,但是传递引用类型参数时,相当于创建了一个指向内存地址的变量,通过修改该地址的值来实现引用修改

6.5、重载方法

一个类中有多个同名方法但带有不同的参数列表,称为方法的重载

重载方法必须在参数列表加以区分,不能通过返回值类型进行区分

你可能感兴趣的:(Java,java,开发语言)