java入门基础知识

java基础

第一章、Java背景及HelloWorld案例

1.Java概述

Java1995年上线, 创始人及公司詹姆斯·高斯林(James Gosling) Sun公司

2.jdk

jdk(Java Development Kit) 开发工具包,包含了JRE和开发工具
jre(JAVA Runtime Environment)Java运行时环境 内部提供了 jvm+类库
jvm(Java Virtual Machine) Java虚拟机
包含关系
jdk–>jre–>jvm
javac编译工具, java运行工具

3.简单的DOS命令

D: 盘符切换
dir 查看当前目录下的内容:
cd XXX 进入指定目录
cd… 回退到上一级
cls 清屏
exit 退出dos命令窗

4.环境变量配置

系统环境变量
新建 %JAVA_HOME% 值:jdk的安装路径
path变量 新建 %JAVA_HOME% \bin;

5.编写HelloWorld案例

显示文件的扩展名 :我的电脑——查看——勾选文件扩展名

1.HelloWorld编写第一步:新建txt文件,修改名称为HelloWorld.java

2.HelloWorld编写第二步:用记事本打开HelloWorld.java,写程序内容,如下

`public class HelloWorld{`
`public static void main(String[] args){`
`System.out.println("HelloWorld");`
`}`
`}`

注意:public 限制文件名与类名一致

1.写完代码要 ctrl +S 保存代码

2.书写要求:

	1.大括号要一对一对写

	2.严格区分大小写

	3.严格区分中英文	

3.运行–>cmd–>切换至Java文件所在目录–>javac HelloWorld.java–>java HelloWord

第二章 基础语法

1.注释

//这是单行注释

/*
这是多行注释
*/

/**
这是一个文档注释
*/
注意 注释不参与运行

2.关键字

Java中具有特殊含义的单词

特点 全部小写,在编译器和高级记事本中有高亮显示

3.常量

在Java的执行过程中其值不会发生改变的量

字符常量       ' A '

整数常量       10

小数常量       1.23

字符串常量     " 你好 "

空常量         null   

4.变量

经常发生改变的数据就是变量

变量就是内存中的存储空间,空间中存储着经常发生改变的数据

变量的定义格式 数据类型 变量名=值; int a=10;

5.数据类型

Java中对每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们所表示的数据大小也是不一样的

数据类型内存占用和取值范围

四类八种

int (byte   short long )   char    boolean     double(float)

对应的内存空间

byte    1个字节       -128-127

short   2个字节      -32768,32767    2^15-1

char     2个字节     0-65535

boolean  1个字节     true or false

int   4个字节       -21亿-21亿

long   8个字节

float    4个字节(取值范围大于int long)

double   8个字节

6.数据类型转换

a. 隐式转换 小的给大的赋值

b.强制类型转换 大的给小的赋值,会损失精度

demo int i = ( int ) 1.35 此时的i=1, 直接砍掉小数部分

7.标识符:就是给类,方法,变量等起名字的符号

标识符定义规则

*不能以数字开头

*不能包含特殊字符;除去$ 下划线_

*不能是关键字

常见命名约定

小驼峰命名法 示例 :stuName 方法名,变量名

大驼峰命名法 示例 :StuTest 类名

第三章 运算符

1.基本运算符

+(加), -(减) ,*(乘) , /(除) ,%(取模)

注意 : 整数与整数想除或者取模只能得到整数

2.赋值运算符 =

int a=3; 左边的数据赋值给右边

3.扩展赋值运算符 +=, *=, %=, /=, -=(只能常量使用;10+=1等同于10=10+1;不成立)

a+=10;   等同于  a=a+10;

a-=10;   等同于  a=a-10;

a*=10;   等同于  a=a乘10;

a%=10;   等同于  a=a%10;

a/=10;   等同于  a=a/10;

扩展赋值运算符隐含了强制类型转换

short s=10;
s+=1;   等同于   s = ( short ) s + 10

4.关系运算符

= , < , <= , ==(java中两个等号代表等同于) , !=(等于取反,不等于)

关系运算符返回一个boolean类型的值 true 或false

5.逻辑运算符 &(与) , |(或) , !(非,取反) , ^(异或);

通常用来连接连个表达式

数学中 3<x<5,Java中表示为x>3&x<5

true & true  结果 true                   true |true  结果 true 

false & false 结果false                  false | false 结果false

true& false 结果false                    true |false 结果true

false & true结果false                    false | true结果true

&遇false则false                            |遇true则true    

------

true^true  结果 false                    ! true 取反为false 

false ^false 结果false                   ! false  取反为true

true^false 结果true              

false ^true结果true                 

^  舍同求异     

6.短路逻辑运算符

&& (短路与) ||(短路或)

&& 遇false则false,左边为false右边就不执行了

|| 遇true则true ,左边为true 右边就不执行了

7.三元运算符

(条件表达式)?表达式1:表达式2;

如果条件表达式值是true返回表达式1,值是false返回表达式2;

注意: 返回类型必须与接受类型一致

第四章 流程控制语句

1.顺序结构

Java中默认的执行流程, 自上而下,从左到右依次执行

2.分支结构(选择结构)

if语句(1)if(关系表达式){ 语句体 } 关系表达式值为true,执行if中的语句体`

if语句(2)if(关系表达式){         *二选一*`

语句体                                       关系表达式值为true,执行if中的语句体,否则执行else中的语句体 

}else{

语句体

}

if语句(3)

if(关系表达式1){                                                  多选一`

语句体1                                                                 如果关系表达式1为true,执行 语句体1,表达式1为false,向下执行`

}else if(关系表达式2){                                     如果关系表达式2为true,执行 语句体2,表达式2为false,继续向下执行`

语句体2                                                  

}else if(关系表达式3){                                     如果关系表达式3为true,执行 语句体3,表达式3为false,继续向下执`

语句体3

}.......else{                                                       ...................`

语句体4}                                                              如果条件都不匹配,执行语句体4`

3.switch语句

定义格式:

switch(值){                            这里的值是一个变量,可以是int ,String,enum,char`

	case 1:                                    如果值==1;执行语句体1;`

		语句体1                             

		break;

	case 2:                                    如果值==2;执行语句体2;`

		语句体2                                  直到找到对应的值,如果找不到执行语句体n`

		break;

..............

	deflaut :
		语句体n

(对范围之外的值进行友好提示)

}

break省略不写会出现case穿透,遇到下一个break结束,或者执行完整个switch语句块`

3.循环语句

(1)for循环

for(初始化语句;条件判断语句;条件控制语句){           执行流程 : 初始化语句(只执行一次);   条件判断语句是true,执                 

语句体                                                                           行,条件控制语句,执行循环语句体,继续执行条件判断语句是tr               

语句体                                                                           ue执行,条件控制语句,直到条件控制语句是false

}

(2)while循环

初始化语句                                                          执行流程与for循环相同

while(条件判断语句){                                          明确循环次数用for

循环语句体                                                            不明确循环次数用while

条件控制语句

}

(3)do....while                                                      因为条件控制语句在循环语句体下边,所以do...while循环,会先执行一

初始化语句                                                          循环体,然后进行判断;就算条件是false,循环体至少执行一次

do{

循环语句体  

}while(条件控制语句)

4.死循环

(1)for(;;){}

(2)while(true){}

(3)do{}while(true)

5.break,continue

break: 结束break所在的循环

continue: 跳出本次循环  逢七过

第五章 数组

1.定义

数组是可以存储多个相同数据类型的容器

静态初始化

数据类型 [ ]变量名={值1,值2,值3}; int[ ]arr={1,2,3}

动态初始化

数据类型 [ ]变量名=new 数据类型[数组长度]; int[ ]arr=new int[3]

2.使用元素访问数组的元素

数组名[索引]

3.数组的length属性,返回数组的长度

arr.length

4.为数组的元素赋值

* A: 为数组的元素赋值

	* a: 如果在使用数组时,不想使用这些默认初始值,也可以显式地为这些元素赋值。

	* 	赋值过的元素已经变为新的数值,没有赋值的元素默认初始化的数值

	* b: 案例

publicclass ArrayDemo02 {
	public static void main(String[] args) {

	 			int[] arr = new int[4]; // 定义可以存储4个整数的数组

	 			arr[0] = 1; // 为第1个元素赋值1

	 			arr[1] = 2; // 为第2个元素赋值2

	 			// 下面的代码是打印数组中每个元素的值

	 			System.out.println("arr[0]=" + arr[0]);

	 			System.out.println("arr[1]=" + arr[1]);

	 			System.out.println("arr[2]=" + arr[2]);

				System.out.println("arr[3]=" + arr[3]);

	 		}
	 }

5.遍历数组

* A:遍历数组

	* 在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历

* B:练习

	`

public class ArrayDemo04 {
			public static void main(String[] args) {
			int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
				// 使用for循环遍历数组的元素
				for (int i = 0; i < arr.length; i++) {
					System.out.println(arr[i]); // 通过索引访问元素
				}
			}
		}

	上述代码中,定义一个长度为5的数组arr,数组的角标为0~4。由于for循环中定义的变量i的值在循环过程中为0~4,因此可以作为索引,依次去访问数组中的元素,并将元素的值打印出来

6.数组中常见的异常

* A: 数组操作中,常见的两个异常

	 数组的索引越界异常

 	 空指针异常

* B: 练习
	public class ArrayDemo_4{
		public static void main(String[] args){
			//数组的索引越界异常
			//int[] arr = {5,2,1};
			//数组中3个元素,索引 0,1,2
			//System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
			
			//空指针异常
			int[] arr2 = {1,5,8};
			System.out.println(arr2[2]);
			arr2 = null; // arr2 不在保存数组的地址了
			System.out.println(arr2[2]);//java.lang.NullPointerException
		}
	}

7.数组最值

* A: 数组获取最值的原理思想

	* 定义数组的第一个元素arr[0]为最大值;循环arr数组,判断如果有比arr[0] 大的就交换,直到arr数组遍历完毕,那么arr[0]中就保存了最大的元素

8.数组获取最值代码实现

A: 代码实现

 int max = arr[0]; 	定义最大值的时候应该假设最大值为arr[0]			

public class ArrayDemo05 {
    public static void main(String[] args) {
	int[] arr = { 4, 1, 6, 3, 9, 8 }; 	// 定义一个数组
        int max = arr[0]; 					
        // 定义变量max用于记住最大数,首先假设第一个元素为最大值`// 下面通过一个for循环遍历数组中的元素
		for (int x = 1; x < arr.length; x++) {
			if (arr[x] > max) { 			// 比较 arr[x]的值是否大于max
			max = arr[x]; 				// 条件成立,将arr[x]的值赋给max`
		}
	}
System.out.println("max=" + max); 	// 打印最大值`
	}
}

第六章 方法

1.方法的格式

a.定义格式   权限修饰符  静态修饰符   返回值类型  方法名( 参数列表 ){ }

b.调用格式    方法名( 实参 ) ;

2.方法的作用

提高了代码的复用性,体现了封装的思想

3.方法的形参实参

形参: 形式参数 方法中定义的用来接受实参的变量

实参: 实际参数 调用方法时传入的参数,实参与形参之间传递的是实参记录的值

注意: 基本类型传递参数时,传的是他的数值

        引用数据类型传递参数时,传的是他的地址值

4.方法的返回值类型

a.方法定义中的类型和return带回的数据类型必须一致

b.可以是任意数据类型

5.方法的重载

方法名相同,参数列表不同,构成方法的重载

参数列表不同表现为: 个数不同 类型不同 顺序不同

应用场景 同一个功能对不同数据类型的处理

例如 println( );  就使用了方法的重载

6.方法中易错知识

基本数据类型作为参数调用方法后,其值不会发生改变,方法中的a 和main中的a是两个变量,互不相关

引用数据类型作为参数调用方法后,方法中的形参接收到地址值,通过地址值对堆内存中的数据进行修改

在主方法中继续引用时通过地址找到的是内存中被修改的值



public class Test1 {
    public static void main(String[] args) {
        int a=10;
        method(a);
        System.out.println(a);  //此时输出a=10
        int[]arr={1,2,3};
        method1(arr);
        System.out.println(arr[0]);//此时输出arr[0]=100;
    }

    private static void method1(int[]arr) {
        arr[0]=100;
    }

    private static void method(int a) {
        a=20;
    }
}

第七章 类和对象

1.类和向对象

类
   类是对象的数据类型
   类是对现实生活具有共同属性,共同行为的事物的抽象,
对象
   对象是具体的实列  具体存在的事物

2.对象的属性和行为

属性:对象具有的各种特征,每个属性都有特定的值

行为: 对象的动作,( 具有操作数据行为的方法)

3.类

public class  类名{
    属性 成员变量 (名词)
    行为 成员方法 (动词)
}

send 发送 message 消息

4.实体类和测试类

实体类     抽象的类 (没有main方法)

测试类     创建对象的类(写main)

5.成员变量和局部变量的区别

区别 成员变量 局部变量
内存中存放位置 堆内存 栈内存
类中位置 类中方法外 方法内部
生命周期 随着对象存在而存在,随着对象消失而消失 随着方法进栈而创建,随着方法弹栈消失

6.对象的使用

对象名.变量名

对象名.方法名

7.对象的内存图

两个变量指向同一个内存地址;

第二次之后的赋值都会把之前的值覆盖掉 两绳牵一狗

8.this 关键字

  1.this 本类成员变量引用

  2.this指向方法调用者的内存地址  等同于 谁调用方法this就代表谁

9.构造方法

1.格式 :

//无参构造

public 类名 (){

}

//有参构造

public  类名(参数列表){

this.本类成员变量=参数

}
2.作用  
    创建对象的方法 被new自动调用
3.类中不写构造方法,系统默认提供一个无参构造方法
  类中写了构造方法,系统就不在提供, 
  /*同时写上无参和有参构造*/

10.标准类

public class Student{
    //成员变量
    private String name;
    private int age ;
    //构造方法
    public Student(){}
    public Student(String name,int age ){
        this.name=name;
        this.age=age;
    }
    //get And set
    public void setName(String name){
        this.namea=name;
    }
    public void getName(){
        return name;
        //这里省略了this  相当于return this.name
    }
    
    //成员方法
    public void show(){
        System.out.println(getName()+","+getAge())
    }
}

第八章 String类

1.API java中已经写好的类

  1. Scanner类

    nextInt 键盘录入整数

    next 键盘 录入字符串 以空格,回车,tab作为标记结束

    nextLine 录入字符串 以回车作为结束标记
    能够接受完整的数据 " 包括空格"及空格之后的数据

3.String 类

3.1 构造方法

//构造方法
String()               初始化新创建的 String对象,以使其表示空字符序列。
String(byte[] bytes)   通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。 
String(char[] value) 分配一个新的 String以便它表示当前包含在字符数组参数中的字符序列。 

3.2 ==

== 基本数据类型 比较的是数据值
== 引用数据类型 比较的是数据的地址值

3.3 常量优化机制

byte a=10+20;
两个常量相加,编译的时候就会进行计算,判断10+20是不是在byte的范围之内
String c="a"+"b";
两个String常量拼接,编译的时候就会进行拼接,如果常量池已经存在相同字符串,直接引用,不再创建新的对象

4.String常用方法

boolean  equals();    字符串内容比较,判断两个字符串是否相同
boolean  equalsIgnoreCase(); 字符串内容比较,判断两个字符串忽略大小写是否相同
char     charAt();    获得字符串索引位置的字符
int      length();    获取字符串的长度
char[]   toCharArray();将字符串转为字符数组
String         substring(int begin,int end)    截取字符串,含头不含尾
String         substring(int beginIndex)       从索引处开始截取,直到结束
String         replace(oldString,newString)             :替换字符串内容,把就旧的内容用新的内容替换             //替换所有就旧值oldString

5.StringBuilder

5.1常用方法

append();  字符串拼接
resverse();  反转字符串
length();    返回字符串的长度
toString();  将StringBuilder转为String

5.2 概述

可变字符串;他的长度可以改变
作用 提高字符串的操作效率

5.3构造方法

StringBuilder();         空的StringBuilder
StringBuilder(String s); 参数String转变为StringBuilder

5.4

在做字符串大量拼接的时候,StringBuilder效率远高于String
String本身不可变,大量拼接的时候会重新创建对象,拼接一次就会创建一个对象,效率低
StringBuilder 可变  只需要向后追加即可

第九章 ArrayList

1.概述

长度可变的容器;
底层是数组
每次扩大自身长度的1/2,

2.常用方法

add(元素);             :添加元素到集合的末尾   (添加返回true)
add(索引,元素);        :把元素添加到指定索引(插队)(无返回值)
remove(索引);          :把索引位置元素删除   (返回被删除的元素)
remove(元素):          :删除集合中第一个与参数相同的元素 (返回Boolean值)
set(索引,元素) ;            :设置索引位置元素   (返回被修改的元素)
get(索引);             :获取索引位置的元素  
size();                :返回集合的长度

3.删除集合中的元素

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("秋雅");
        list.add("貂蝉");
        list.add("王冰冰");

        list.add("貂蝉");
        list.add("貂蝉");
        //方式一
        for (int i = 0; i < list.size(); i++) {
            if("貂蝉".equals(list.get(i))){
                list.remove(i);
                i--;
            }
        }
        //方式二
        for (int i = list.size() - 1; i >= 0; i--) {
            list.remove("貂蝉");
        }
        System.out.println(list);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值