Java基础-基础知识汇总

Java基础

一、变量与常量

在这里插入图片描述
标识符

  • 标识符可以由字母、数字、下划线(_)和美元符($)组成,不能以数字开头
  • 标识符严格区分大小写
  • 标识符不能是Java关键字和保留字
  • 标识符的命名最好能反应出其作用

关键字

在这里插入图片描述

1、变量

  • 变量的三个元素:变量类型、变量名和变量值

变量名的命名规则:

  • 1、满足标识符命名规则;
  • 2、符合驼峰发命名规范;
  • 3、尽量简单,做到见名知意;
  • 4、变量名的长度没有限制

类的命名规则:

  • 满足Pascal命名规范

变量声明
格式:

数据类型 变量名;
Eg:
int n; 声明整型变量n
long count; 声明长整型变量count

  • 局部变量只在定义它的大括号内有效!

赋值

  • 使用"="运算符进行赋值
  • "="叫做赋值运算符,将运算符右边的赋值给左边的变量。
    Eg:
int n ;//定义int型变量n
n =3;3赋值给n
  • 可以在定义变量的同时给变量赋值,即变量的初始化。
int n = 3;
  • 变量定义
int octal = 037; //定义int类型变量存放八进制数据
long longNumber = 0xa2cdf3ffL;//定义变量存放十六进制长整型数据
short shortNumber = 123; //定义变量存放短整型数据
byte b = 10; //定义变量存放byte类型数据

2、常量

常量命名一般用大写

  • 两个单词,用下划线连接
final int N = 5;
final double MIN_VALUE = 0;

3、数据类型

在这里插入图片描述

3.1 基本数据类型

在这里插入图片描述Java基本数据类型的范围
Java基本数据类型的范围备注:
1、1.4E-45表示1.4X10-45,读作1.4乘以10的负45次方
2、boolean包括true和false两个值
3、char类型占2个字节,即16位

3.1.1 整型字面值
  • Java中有三种表示整数的方法:十进制、八进制、十六进制
    八进制:以0开头,包括0-7的数字。Eg:037,056
    十六进制:以0x或者0X表示,包括0-9的数字,及字母a-f,A-F。 Eg:0x12,0xabcf,0XABCFF
3.1.2 浮点型字面值
  • 浮点型字面值默认情况下表示double类型,也可以在值后加d或D
  • Eg:123.43d 或 123.43D
  • 表示float类型,则需要在字面值后加f或F
  • Eg:23.4f 或 23.4F
float f = 1234.328f; //定义一个单精度浮点型变量,存放1234.328
double d = 5623.464; //定义一个双精度浮点型变量,存放5623.465
3.1.3 字符型字面值
  • 字符型字面值用单引号内的单个字符表示。
  • Eg:‘a’ , ‘b’ , ‘$’
char a = 'a';
char ch = 65;

ASCII码

  • ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
  • 基于拉丁字母的一套电脑编码系统
  • 主要用于显示现代英语和其他西欧语言
  • 表示:使用7位或8位二进制数组合来表示128或256种可能的字符。
  • 7位二进制数组合——标准ASCII码
  • 8位二进制数组合(后128位)——扩展ASCII码

Unicode编码

  • Unicde编码又称为统一码、万国码
  • 目标是支持世界上所有的字符集
char c = '\u005d'; //Unicode表示法,在值前加前缀\u
3.1.4 布尔类型字面值
  • 布尔值只能定义为true和false
boolean b = true;
3.1.5 字符串字面值

字符串不属于基本数据类型,它是类!

  • 双引号引起来的0个或多个字符。
String str = "Hello World!" //空格也算一个字符

3.2 基本数据类型变量的存储

  • 数据类型分为基本数据类型和引用数据类型
  • 引用数据类型包括数组和类等
  • 类定义的变量又叫对象
  • 按照作用范围分为:类级、对象实例级、方法级、块级

在这里插入图片描述

4、Java中常见的转义字符

转义字符是一些有特殊意义的字符,用来表示常见的不能显示的字符,如\n表示换行。
在这里插入图片描述

5、类型转换

  • 类型转换分为自动类型转换个强制类型转换。
  • 自动类型转换 =>又叫隐式类型转换
  • 强制类型转换:如果A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换
double d = 123.4;
float f = (float)d;

在这里插入图片描述

//char类型和int类型之间的转换
char c = (char)65536;
int n;
n = c;//隐式类型转换
c = (char)n;

//整型和浮点型的类型转换
int x = 100;
long y = x;
x = (int)y;
float f = 1000000000000000L;
float f1 = 103948583923948L;  //长整型long转换为float会发生精度丢失

二、运算符

在这里插入图片描述

表达式:由运算符和操作数组成

sum = num1 + num2 //num1,num2为操作数;+ 为运算符;= 为赋值运算;

1、算数运算符

主要用于进行基本的算数运算,如加法、减法、乘法和除法等。
在这里插入图片描述

int num1=10,num2=5;
int result;//存放结果
result = num1 + num2;//加法
System.out.println(13/5) => 2//分子分母都是整型时,结果为整除后的结果

在这里插入图片描述

2、赋值运算符

格式:

变量 = 表达式;

赋值运算符是从右往左运算!
赋值运算符的左边不能是常量
在这里插入图片描述

3、关系运算符

· 比较运算符用于判断两个数据的大小
· 主要用于条件和循环语句中的判断条件
在这里插入图片描述

float f=5.0f; long l =5;f==l;
//结果为true,浮点数与整数进行比较,只要值相等就返回true

4、逻辑运算符

· 用来连接一个或者多个条件,判断这些条件是否成立
· 逻辑运算符的结果是布尔类型
在这里插入图片描述

//&运算符
int n = 3;
boolean b = (3>7)&((n++)<2) //问:b=?,n=?
b=false,n=4

//&&运算符
int n = 3;
boolean b = (3>7)&&((n++)<2) //问:b=?,n=?
b=false,n=3

· &&运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。

//  ||运算符
int n = 3;
boolean b = (3<7)||((n++)<2) //问:b=?,n=?
b=true,n=3

· ||运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。

5、条件运算符

· Java中的条件运算符是三目运算符
· 语法:

布尔表达式?表达式1:表达式2

· 当布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值

int a=10,b=7;
int max;//声明变量max,存放最大值
max = a>b?a:b;

boolean g = a>b?(3<6|3<1):(true==false);

6、位运算符

7、运算符的优先级

在这里插入图片描述

三、流程控制

三大流程控制语句:顺序、选择、循环

在这里插入图片描述

1、选择结构

1.1 if结构,if-else结构

即根据不同的条件去执行不同的操作

**简单if语句的格式:
if(条件){
   
	语句;
	};
	
**if-else语句形式:
if(true){
   
	语句;
	}else{
   
	语句;
	};

键盘接收数据:

**键盘接收数据:
Scanner s = new Scanner(System.in);
int n=s.nextInt();

多种数据类型接收方法:
在这里插入图片描述

1.2 多重if

	if(表达式1)
		语句1;
	else if(表达式2)
		语句2;
	else if(表达式3)
		语句3;
	···
	else
		语句n;

1.3 嵌套if

	if(表达式1){
   
		if(表达式2){
   
			if(表达式3){
   
				语句;
	}}}else{
   
		语句;}

1.4 if和switch的区别

· if结构:判断条件是布尔类型;判断条件是一个范围
· switch结构:判断条件是常量值

1.5 switch结构

switch(表达式){
   
	case 常量表达式1:
		语句1;break;
	case 常量表达式2:
		语句2;break;
	default:
		语句3;
	}
/*注意事项:
**如果不写break,则会继续执行下边的case里的内容,造成“穿透”。
*/

2、循环结构

2.1 while循环

while(循环条件)
{
   
	语句;
}
//如果循环体只有一条语句,大括号可以省略
//为避免死循环,小括号后面不要加分号

执行流程:
在这里插入图片描述

2.2 do-while

do
{
   
	语句;
} while(循环条件);

/*注意事项:
* 1、do- while循环至少执行一次
* 2、循环条件后的分号不能丢
*/

在这里插入图片描述

2.3 for

for(表达式1;表达式2;表达式3)
{
   
	语句;
}

//表达式1:循环变量定义并初始化 Eg:int i=1;
//表达式2:判断语句 Eg:i<=9;
//表达式3:循环条件改变的表达式 Eg:i++

2.4 三种循环结构的应用场景

1、for循环适用于循环次数固定的场景
2、while循环适用于不知道循环次数,只知道循环达到某个条件可以执行时使用
3、do-while适用于不知道循环具体执行次数,只知道满足某个条件继续执行或者结束执行,并且循环肯定执行一次时使用

2.5 循环嵌套

//多重循环
while(循环条件)
{
    ......
	while(循环条件){
   
		......
	}
	......
}

for(表达式1;表达式2;表达式3)
{
   
	for(表达式1;表达式2;表达式3){
   
		......
		}
		......
	}

2.6 break语句

  • break语句可以结束当前循环的执行
  • 执行完break语句后,循环体中位于break语句后面的语句就不会被执行
  • 在多重循环中,break语句只向外跳一层
  • 在这里插入图片描述

2.7 continue语句

  • continue语句只能用在循环里
  • continue语句可以结束当前循环的执行,但是要继续下一次循环的执行
    在这里插入图片描述

2.8 debug

·

四、数组

数组是相同类型的数据按顺序组成的一种引用数据类型

1、一维数组

  • 数组声明:
    语法格式:

    数据类型[] 数组名;
    数据类型 数组名[];

int[] myIntArray;
int myIntArray[];
char[] ch;
String[] strArray;
  • 数组创建

    语法格式一:
    先声明后创建

    数据类型[] 数组名;
    数组名 = new 数据类型[数组长度]

    语法格式二:

    数据类型[] 数组名 = new 数据类型[数组长度];

//创建一个长度为10的整型数组
//Eg1:
int[] arr;
arr = new int[10];

//Eg2:
int[] arr = new int[10];

//注意:数组长度必须指定
  • 数组的初始化:声明数组的同时给数组赋值
int[] arr = {
   1,2,3,4,5,6,7,8,9,10};
  • 数组元素的引用
    在这里插入图片描述
  • 数组长度

属性length表示数组的长度,Eg: a.length

2、增强型for循环

  • 又叫foreach循环
int[] arr = {
   1,2,3,4,5};
for(int n:arr)
	System.out.println(n);
  • 增强型for循环与普通for循环的区别
    1、增强型for循环书写简洁,遍历数组时不需要下标,主要用于数组或集合的遍历,数组或集合遍历完毕时循环会结束执行。
    2、普通for循环需要三个条件,包括循环变量、循环结束条件和循环变量的变化。在进行数组遍历时,如果需要使用下标,可以使用普通for循环。比如:从键盘接收数组元素时,提示输入第几个元素。如果使用增强型for循环需要额外定义变量。

3、二维数组

//二维数组声明的三种形式
int[][] intArray;  //声明int类型的二维数组
float foloatArray[][];  //声明float类型的二位数组
double[] doubleArray[];   //声明double类型的二位数组

//创建一个三行三列的int类型的数组
intArray = new int[3][3];

//声明数组的同时进行创建
char[][] ch = new char[3][5];
//创建float类型的数组时,只指定行数
floatArray = new float[3][];
//每行相当于一个一维数组,需要创建
floatArray[0] = new float[3];//第一行有3列
floatArray[1] = new float[4];//第二行有4列
floatArray[2] = new float[5];//第三行有5列

//二维数组的初始化
int[][] num = {
   {
   78,98},{
   65,76,63},{
   98}};
//循环输出二维数组的内容
for{
   int i=0;i<num.length;i++){
   
	for(int j=0;j<num[i].length;j++){
   
		System.out.print(num[i][j]+"   ");
		}
	}

五、方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

  • 方法声明

    语法格式:
    访问修饰符 返回类型 方法名(参数列表){
    方法体
    }

public static void main (String[] args){
   
	System.out.println("Hello Wold");
}

1、方法类型

1.1 无参无返回值方法

语法:
访问修饰符 void 方法名(){  
	方法体
}
package com.duan.test;

import javax.swing.text.Style;
import java.util.Scanner;

public class Demo {
   
    //打印输出星号的方法
    public void printStar(){
   
        System.out.println("****************");
    }

    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        sc.next();
        Demo myDemo = new Demo();
        myDemo.printStar();
        System.out.println("Hello World!");
        myDemo.printStar();
    }
}

1.2 无参带返回值方法

语法:
访问修饰符 返回值类型 返回值(){
return;
}

package com.duan.test;

public class Rectangle {
   

    //求长方形面积的方法
    public int area(){
   
        int length =10;
        int width = 5;
        int getArea = length*width;
        return getArea;//返回语句
    }

    public static void main(String[] args) {
   
        Rectangle rectangle = new Rectangle();
        System.out.println("长方形的面积为:"+rectangle.area());
    }
}

1.3 有参无返回值方法

语法:
访问修饰符 void 方法名字(参数){
方法体
}

package com.duan.test;

public class MaxDemo {
   
	//求最大值的方法
    public void max(float a,float b){
   
        float max;
        if (a>b){
   
            max = a;
        }else {
   
            max = b;
        }
        System.out.println("两个数"+a+"和"+b+"的最大值为:"+max);
    }

    public static void main(String[] args) {
   
        MaxDemo maxDemo = new MaxDemo();
        int a=5,b=3;
        maxDemo.max(a,b);
        float m=5.6f,n=8.9f;
        maxDemo.max(m,n);
        maxDemo.max(9.8f,12.8f);
    }
}

1.4 带参有返回值方法

语法:
访问修饰符 返回值类型 方法名(参数){
return;
}

package com.duan.test;

public class FacDemo {
   
    //方法不能嵌套定义
    //求阶乘的方法
    public int fac(int n){
   
        int s = 1;
        for (int i=1;i<= n;i++){
   
            s*=i;//s=s*i
        }
        return s;
    }

    public static void main(String[] args) {
   
        FacDemo facDemo = new FacDemo();
        int fac = facDemo.fac(3);
        System.out.println("3!="+fac);
        int sum =0;
        //求1!+2!+3!+4!+5!
        for (int i=1;i<=5;i++){
   
            fac = facDemo.fac(i);
            sum = sum+fac;
        }
        System.out.println("1!+2!+3!+4!+5!="+sum);
    }
}

1.5 关于参数和返回值的应用场景分析

1.参数
对于一个方法,可以没有参数,也可以有一个或者多个参数,这个是根据具体需求完成的。什么时候用无参的方法,比如我们课程介绍的输出一串星号,是一个简单的输出动作,内容时确定的,所以可以不用参数。在后面的学习过程中,会发现如果对成员变量的值进行输出,成员变量值已经在类中定义好了,此时方法中也可以不用定义参数了。
什么时候使用参数,比如需要求一个数的平方,而这个数可以是任意一个整数,那么就需要参数了。像求平方的操作,只需要对一个数求平方,所以一个参数及可以了。如果想求两个数的和,就需要两个参数了。
总结一下,如果方法的操作很固定,没有变化,就可以不使用参数,否则就要使用参数来应对变化了。
2.返回值
对于有无返回值使用可以这样判断,如果想让方法返回具体的值,进行之后的使用,就需要设置与返回值相同类型的返回类型。如果值不需要之后的使用,就可以不编写返回值。

1.7 数组作为方法参数

package com.duan.test;

public class ArrayMetod {
   
    //打印输出数组元素值
    public void printArray(int[] arr){
   
        for (int i=0;i<arr.length;i++){
   
            System.out.println(arr[i]+" ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
   
        int[] arr = {
   1,2,3,4,5};
        ArrayMetod am = new ArrayMetod();
        am.printArray(arr);
    }
}
package com.duan.test;

import java.util.Scanner;

public class ArraySearch {
   
    //查找数组元素值的方法
    public boolean search(int n,int[] arr){
   
        boolean flag = false;//默认是没找到
        for (int i=0;i<arr.length;i++){
   
            if (arr[i]==n){
   
                flag = true;//找到了
                break;
            }
        }
        return flag;
    }

    public static void main(String[] args) {
   
        int[]arr1={
   10,20,30,40,50,60};
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要查找的数据:");
        int n1 = sc.nextInt();
        ArraySearch as = new ArraySearch();
        boolean
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值