Java基础知识(结合案例讲解)

本文详细介绍了Java的基础知识,包括Java结构、main函数、基本数据类型、变量与常量、运算符的使用。还探讨了字符串处理、输入输出操作,以及选择和循环结构。此外,提到了大数概念以及数组的声明、访问和拷贝。内容全面,适合Java初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面
  你们好,我是小庄。很高兴能和你们一起学习Java。如果您对Java感兴趣的话可关注我的动态.
  写博文是一种习惯,在这过程中能够梳理和巩固知识。

一、Java结构和main函数

以下是文件名为Test.java的文件

/*
*创建成功后,文件名为Test.java,类名和文件名保持一致
*/
public class Test{//Test是类名
	//main函数的定义是固定的,必须写完整
	public static void main(String[] args){
		//这个是单行注释
		int a=1;
		/**
		*这个是多行注释
		*/
		System.out.println("a="+a);
	}
}
//Test2类
class Test2{
	
}

总结:

  • 文件名必须和类名保持一致,否则会报错
  • class类或者方法是由一对”{}“组成,缺一个多一个都会报错
  • 每一行都要在后面加分号" ; "结束,否则报错
  • 一个java文件可以有多个Class类,但只有一个public,否则报错
  • 一个class类里面最多只能有一个main函数,并且main函数不能当做方法被调用
  • Java区分大小写

二、基本类型

八种基本类型

1、boolean 布尔类型

只有truefalse,默认值是false

2、byte 字节类型

1byte = 8bits(8位)
值的范围是: -128到127,默认值为0

例题1:

byte a=(byte)-129;
System.out.println("a="+a);

byte b=(byte)128;
System.out.println("b="+b);

输出:a=127
b=-128
解析如图:

byte

3、short 短整型
4、 int 整型
5、long 长整型
6、float 单精度浮点类型
7、double 双精度浮点类型
8、char 字符

例题2:

图片

小结:

  1. float类型赋值时,必须末尾加f
  2. 当f类型转double类型时,值会变化
  3. 当两个浮点型数值无限接近时,两个数值相等

三、变量和常量

声明变量:前面必须要有类型,变量名必须是一个以字母开头并由字母或数字构成的序列。不能使用Java保留字作为变量名;

int a;		//正确
int a12;	//正确
double public;	//错误,public为Java保留字
int %d;		//错误,必须以一个字母开头,%不是字母

声明变量的同时可以初始化:

int a=3;

常量:在类型前面使用关键字final;只能被赋值一次,一旦被赋值后,就不能更改了,常量名习惯用大写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXI41W52-1625674611142)(盘点Java基础知识(每天进步一点点).assets/1.png)]

四、运算符

运算符作用
+在数值运算时作为加法,在两个字符串中间作为连接符
-数值运算中的减法
*在数值运算时作为乘法
/在数值运算时做除法,并只取整数部分,小数点后面去掉
%模运算,只取余数,整数部分去掉
=这个不是等于字符,而是赋值运算符
&&与,表示所有数条件都要同时满足,否则返回flase
||或,表示多个数其中一个条件条件满足即返回ture,否则返回flase
!非,反义作用,当原条件为true,添加!后,条件变成flase
==等于,若两边的数不相等,则返回flase
!=不等于,若两边的数相等,则返回flase
<<将运算数的二进制整体左移指定位数,低位用0补齐
>>将运算数的二进制整体右移指定位数,整数高位用0补齐,负数高位用1补齐(保持负数符号不变)
,逗号运算符,将表达式用逗号分开进行运算
>大于
<小于
>=大于等于
<=小于等于

举例如下

public class Test{
	public static void main(String[] args){
		int a=2,b=3;//逗号运算符和赋值运算符的使用,逗号让两个表达式分开赋值
		int c;
		c=a+b;//此时的+是加法运算,c的值为5
		c=a-b;//减法运算,c=-1
		c=a*b;//乘法运算,c=6;
		c=a/b;//除法运算,c=0;只取整数部分
		c=a%b;//模运算,c=2
		System.out.println(a==b);//等于判断,此时输出flase
		System.out.println(a!=b);//不等于判断,此时输出true
		//十进制:2  二进制:10
		//左移后二进制为:100,此时十进制为:4
		System.out.println(a<<1);//左位运算,向左移动一位,输出4
		//十进制:3 二进制:11
		//右移一位后为:1,十进制为:1
		System.out.println(b>>1);//右位运算,向右移动一位,正数,用0补齐,输出1
		System.out.println("a="+a);//此时a作为连接符,输出a=2	
	}
}

五、字符串与输入输出

1、字符串

字符串(String)的定义:String类型,字符串使用双引号包起来

​ String str="";

字符串的拼接:+

String a,b,c;//定义字符串a,字符串b,字符串c
a="1";//给字符串a赋值"1"
b="2";//给字符串b赋值"2"
c=a+b;//此时,c="12",这就是字符串的拼接

检测字符串是否相等equals方法

String a="1", b="2";//定义两个字符串,区分大小写
a.equals(b);//判断字符串a是否等于字符串b,显然不相等,返回false

获取字符串长度方法:length()

检测字符串是否为空

String str="";
//方法一:
if(str.length()==0)//字符串长度为0时是空串
//方法二
if(str.equals(""))//字符串是否等于"" -->空

2、输入输出

输入:需要在最顶部导入包:import java.util.Scanner;

//Scanner是输入类,in可以自定义,但很少定义其他名;通常默认使用,是为了方便其他程序员读我们的代码
Scanner in=new Scanner(System.in);
//输入一行数据(可能包含空格),用字符串name接收.比如输入:Hello Word!
String name=in.nextLine();//此时name的值为:"Hello Word!"
//输入一行数据,如果空格,则后面数据不接收,只接收第一个单词;比如输入:Hello word!
String word=in.next();//此时word的值为:"Hello"
int age=in.nextInt();//输入一个整数,用age变量接收

格式化输出:下面只列举常用的

//%s表示输出String类型数据
System.out.printf("%s", "Hello word");
// %n表示换行
System.out.printf("%n");
//%d表示输出int类型数据
System.out.printf("%d",12);
// %S将字符串以大写形式输出
System.out.printf("%S", "Hello");//最后输出HELLO
//%c表示将char类型数据输出
System.out.printf("%c",'a');
//%f表示将浮点类型数据输出
System.out.printf("%f",3.2);
//%.2f表示将浮点类型数据输出,并只保留两位小数,四舍五入原则
System.out.printf("%.2f",2.225);//输出:2.23
//%x表示将十六进制整数输出
System.out.printf("%x",9f);
//%b表示将布尔类型数据输出
System.out.printf("%b",true);
//%o表示将八进制数据输出
System.out.printf("%o",237);//输出结果为355

六、选择和循环结构

1、if语句

//当表达式返回值为true时执行a=1;
if(表达式) {a=1;} 
//表达式返回值为true时执行a=1;否则执行a=2;
if(表达式) {a=1;} 
else{a=2;}
//当if表达式返回值为true时执行a=1;否则执行else if表达式,当为true时值执行a=2;否则执行a=3;
if(表达式){a=1;}
else if(表达式){a=2;}
else{a=3;}

2、switch语句

switch(表达式)//当条件表达式成立时(true)执行下面语句
{	
	case 条件1: 执行语句;
	case 条件2: 执行语句;
	default: 必定执行的语句
}
例子:
int a=2;
switch(a){
    case 1: System.out.println("条件1"); break;
    case 2: System.out.println("条件2"); break;
    default: System.out.println("必执行条件"); break;
}
输出结果:
条件2
必执行条件
    
提示:break;需要加在后面,否则还会继续执行下一个case分支语句。容易引发错误,这也是switch很少在程序中使用的原因

3、while语句

while(条件表达式)//当条件表达式成立时(true)执行下面语句
{
	执行的语句
}
do{
执行语句
}while(条件表达式);

例子:
int a=5;
while(a>5){//当a<=1时条件不满足
	System.out.print(a);//这条语句不执行
	a--;
}
do{
	System.out.print(a);//最后输出结果5
	a--;
}while(a>5);
a=5;//重新赋值为5

输出结果:
5

注意: 要限定条件,否则会进入死循环,一直执行下去,直到电脑死机或关机,慎用

小结:

  1. while: 先判断 再执行 条件不成立 循环体 一遍都不执行
  2. do…while: 先执行 再判断 条件不成立 循环体 至少执行一遍

4、for语句

最简形式: for( ; ; )

for(单次表达式;条件表达式;末尾循环体)
{
	中间循环体;
}
例子:
int a=0
for(a;a<10;a++)//a从0加到9都执行下面循环,当a=10时,循环退出
{
	System.out.print(a);
}
结果:
0123456789

循环嵌套

for(单次表达式;条件表达式;末尾循环体){
	for(单次表达式;条件表达式;末尾循环体){
		中间循环体;
	}
}
例子
int i,j;
for(i=0;i<3;i++){
	for(j=0;j<2;j++){
	System.out.println(i+j);//i和j相加
	}
	System.out.println("内循环退出---,外循环i+1");
}
结果:
0		//此时i=0,j=0
1		//此时i=0,j=1
内循环退出---
1		//此时i=1,j=0
2		//此时i=1,j=1
内循环退出---
2		//此时i=2,j=0
3		//此时i=2,j=1
内循环退出-- 

5、continue和break

continue:退出当前循环

break:中断循环

区别如下:

//使用continue
int i;
for(i=1;i<4;i++){
	if(i==2){//此时i=2,退出此次循环,但循环还在继续
	continue;
	}
	System.out.print(i);//i=1和i=3都执行成功,i=2中断执行,直到i=4循环才退出
}
结果:
13
//使用break
int i;
for(i=1;i<4;i++){
	if(i==2){//此时i=2,中断循环,循环退出
	break;
	}
	System.out.print(i);//i=1执行成功,当i=2时循环已经退出
}
结果:
1

七、大数、数组

1、大数

为什么用大数,什么是大数?

大数是java.math包中很有用的两个类:BigInteger和BigDecimal,因为这两个类的开头都有Big,所以我们叫它大数。

在实际应用场景中,对数的精度要求很高,基本的整型和浮点数不能满足需求,所以需要用到大数

//valueOf()方法将int类型的数据转换为大数,则大数可以进行计算,int类型的数据不能直接和大数进行计算
BigInteger a=BigInteger.valueOf(20);
//BigInteger不能使用算术运算符(+和*)进行计算
//如果想对BigInteger进行加运算时,如下操作
BigInteger b=BigInteger.valueOf(10);
BigInteger c=a.add(b);//此时,b为其他的BigInteger数据,c=a+b
//如果想对BigInteger进行乘运算时,如下操作
BigInteger d=c.multiply(a);//d=c*a

提示:BigDecimal是对浮点类型进行处理,其他使用的方法和BigInteger一样
举例:BigDecimal f=BigDecimal.valueOf(3.22);
注意:使用大数时,需要导入:import java.math;这个类包

2、数组

声明数组

int[] a;//只是声明,并没有初始化,也可以这样声明 int a[];
int[] a=new int[10];//声明数组并初始化一个可以存储10个整数的数组

访问数组

//给数组赋值
//声明并初始化10个长度的整型数组
int[] a=new int[10];
//定义输入
Scanner in=new Scanner(System.in);
//a.length表示获取数组的长度。注意:获取字符串长度使用的是length(),多了()
for(int i=0;i<a.length;i++){//进行遍历数组逐个赋值
    a[i]=in.nextInt();
}
//获取数组中第i位数,数组索引从0开始
int b=a[i];//此时b的值可以获取索引为i的整数

//for each遍历数组方式
for(int element:a){//a表示数组的变量,element表示数组的元素
    System.out.println(element);//对数组的元素逐个输出
}

数组拷贝

//方法一,通过遍历数组,同时把值赋值给新的数组
int[] a=new int[10];//假设数组a中已经有值
int lengths=a.length;//获取a的长度
int[] b=new int[lengths];//数组b中是空数组
for(int i=0;i<a.length;i++){//遍历数组a
    b[i]=a[i];//将数组a的元素逐个赋值给数组b
}
//方法二,通过java库的类使用其方法进行拷贝
//这里只定义数组,没有初始化整数数组的存储长度,这个是关键点
int[] c;
//Arrays是java库中的类,copyOf是方法,第二个参数是定义数组空间长度
c=Arrays.copyOf(a,a.length);

小结:方法一中,数组b的长度不灵活,如果不知道数组a的长度时,定义数组b长度数值小则报错,定义长则浪费空间
    总的来说,方法二相对比较好,灵活,运行速度快一点  

上一篇: Java环境搭建

下一篇:Java对象和类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值