Java语言第一篇java基础

发布时间:2024年01月22日

第一篇Java语言基础

详细语法链接

1 开发环境配置

1.1 JDK的下载和安装
JDK下载地址
使用纯英文目录安装
1.2 Path环境变量的配置
此电脑右键属性->高级系统设置->环境变量
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_65
变量名:Path
变量值:%JAVA_HOME%\bin

2. java基础语法

1.注释
单行注释的格式是使用//
多行注释的格式是使用/* 和 */
文档注释以/**开始,以*/结束。

2.常量
常量:在程序运行过程中,其值不可以发生改变的量。
字符串,整数,小数,字符,布尔,空常量 ;

3.变量
格式一: 数据类型 变量名 = 数据值;
格式二: 数据类型 变量名;
变量名 = 初始化值;
格式三: 数据类型 变量名 = 数据值,变量名 = 数据值;

4.数据类型
基本数据类型:

数据类型关键字内存占用取值范围
整数类型byte1-128~127
short2-32768~32767
int(默认)4-2的31次方到2的31次方-1
long8-2的63次方到2的63次方-1
浮点类型float4负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38
double(默认)8负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308
字符类型char20-65535
布尔类型boolean1true,false

5.标识符
命名规范: 首字母小写,从第二个单词开始每个单词的首字母大写。

6.类型转换

  1. 隐式转换 这种转换方式是自动的
  2. 强制转换 格式:目标数据类型 变量名 = (目标数据类型)值或者变量;

2.1运算符

1 算术运算符
+,-,*,/,%;加减乘除余数
注意: 当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

2 自增自减运算符
++ 自增 变量的值加1
– 自减 变量的值减1

int x = 10;
int y = x++; // 先赋值后运算,++在后边,所以是使用x原来的值赋值给y,x本身自增1
System.out.println("x:" + x + ", y:" + y); // x:11,y:10

int m = 10;
int n = ++m; // 先运算后赋值,++在前边,所以是使用m自增后的值赋值给n,m本身自增1
System.out.println("n:" + n + ", m:" + m); // n:11,m:11

3 赋值运算符
=;+=;-=;*=;/=;%=;

4 关系运算符
==;!=;>;>=;<;<=;

5 逻辑运算符
&与,同时true则true;
| 或,有一个true则true;
^异或,结果不同则true;
!非,相反结果;

6 短路逻辑运算符
短路是执行左边判断出结果就不再执行右边
&&短路与;
||短路或;

7 三元运算符

关系表达式 ?true执行表达式1 :false执行表达式2;

2.2流程控制语句

1.if语句

格式:
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
}else {
    语句体n+1;
}

2.switch语句

switch (表达式) {
	case 1:
		语句体1;
		break;
	case 2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}

如果switch语句中,case省略了break语句, 就会开始case穿透,不在进行匹配直到找到break

3.for循环

for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}

4.while循环

初始化语句;
while (条件判断语句) {
	循环体语句;
    条件控制语句;
}

5.dowhile循环

初始化语句;
do {
	循环体语句;
	条件控制语句;
}while(条件判断语句);

6.跳转控制语句

  • break跳出循环,结束循环
  • continue跳过本次循环,继续下次循环

7.Random产生随机数

     import java.util.Random;
     Random r = new Random();
     int num = r.nextInt(10);

2.3数组

数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

格式一: 数据类型[] 数组名
格式二: 数据类型 数组名[]

1.数组的动态初始化

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

2.数组元素访问
每一个存储到数组的元素,都会自动的拥有一个索引,从0开始。

访问数组元素格式

数组名[索引];

3.静态初始化格式
?

  • 方式一

    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
    
  • 方式二

    数据类型[] 数组名 = {元素1,元素2,...};
    

    4.异常

ArrayIndexOutOfBoundsException 数组越界异常。

NullPointerException 空指针异常。

2.4二维数组

1.动态初始化格式

数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素

2.二维数组静态初始化

完整格式 : 数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2...} , {元素1, 元素2...} 
简化格式 : 数据类型[][] 变量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};

2.5方法

1.无参数方法定义和调用

  • 定义格式:

    public static void 方法名 (   ) {
    	// 方法体;
    }
    
  • 调用格式:

    方法名();
    

    2.带参数方法定义和调用

  • 定义格式:

    public static void 方法名 (参数1) {
    	方法体;
    }
    
    public static void 方法名 (参数1, 参数2, 参数3...) {
    	方法体;
    }
    
  • 调用格式:

    方法名(参数);
    
    方法名(参数1,参数2);
    
  • 形参:方法定义中的参数
  • 实参:方法调用中的参数值
  1. 带返回值方法的定义和调用
  • 定义格式

    public static 返回值类型 方法名 ( 参数 ) {
    	方法体; 
    	return 数据 ;
    }
    
  • 调用格式

    数据类型 变量名 = 方法名 ( 参数 ) ;
    
  1. 方法重载
    满足下列条件的多个方法相互构成重载
  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同,类型不同或者数量不同
  • 与返回值无关
  1. 方法的参数传递

5.1 方法参数传递基本类型

  • 基本数据类型的参数,形式参数的改变,不影响实际参数
  • 每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

5.2 方法参数传递引用类型

* 对于引用类型的参数,形式参数的改变,影响实际参数的值 
* 引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果 

3. String类

String 类代表字符串,Java 程序中所有的双引号字符串,都是 String 类的对象,字符串不可变,它们的值在创建后不能被更改

1.String类的构造方法

常用的构造方法

public String() //创建一个空白字符串对象,不含有任何内容
public String(char[] ch) //根据字符数组的内容来创建字符串对象
public String(String original) //根据传入的字符串内容,来创建字符串对象
String s = "abc" 直接赋值的方式创建字符串对象
  • 通过构造方法创建

    ? 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同

  • 直接赋值方式创建

    ? 以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护

2. 字符串的比较

  • == 比较基本数据类型:比较的是具体的值
  • == 比较引用数据类型:比较的是对象地址值

String类 : public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写

3.String类的常用方法

? public boolean equals(Object anObject) 比较字符串的内容,严格区分大小写

? public boolean equalsIgnoreCase(String anotherString) 比较字符串的内容,忽略大小写

? public int length() 返回此字符串的长度

? public char charAt(int index) 返回指定索引处的 char 值

? public char[] toCharArray() 将字符串拆分为字符数组后返回

? public String substring(int beginIndex, int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)

? public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串

? public String replace(CharSequence target, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串

? public String[] split(String regex) 根据传入的规则切割字符串,得到字符串数组

4.StringBuilder类

1 StringBuilder类概述

? 概述 : StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的

2 StringBuilder类和String类的区别

  • **String类:**内容是不可变的
  • **StringBuilder类:**内容是可变的

3 StringBuilder类的构造方法

常用的构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象

4 StringBuilder常用的成员方法

  • 添加和反转方法

    方法名说明
    public StringBuilder append(任意类型)添加数据,并返回对象本身
    public StringBuilder reverse()返回相反的字符序列

5 StringBuilder和String相互转换

  • StringBuilder转换为String

    ? public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String

  • String转换为StringBuilder

    ? public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder

文章来源:https://blog.csdn.net/Emperor_rock/article/details/135726739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。