0
点赞
收藏
分享

微信扫一扫

Java学习笔记(一)

星河出山 2022-04-04 阅读 73
java

jre:java runtime environment:Java运行程序环境,

jdk:Java development kit :Java程序开发工具包

jvm虚拟机保证可以跨平台

该视频使用Java11.0.1

jdk安装目录最好别有中文和空格(防止意外问题)

jdk安装目录:

bin:存放jdk各种工具命令(javac,java)

conf存放jdk相关配置文件

include:存放一些平台特定头文件

jmods:jdk各种模块

legal:jdk授权文档

lib;jdk补充iar包

DOS命令:

win+r   cmd

1盘符命令:E:

2dir:查看当前路径下内容

3cd切换路径

4cd .. 返回上一级

5cd /路径/路径   进入多级目录

6cd \   回到盘符目录

7cls 清屏

8exit 退出窗口

006PATH变量配置

011关键字:特定含义的单词,关键字全部小写,关键字有特殊颜色

012常量:程序运行过程中不可以发生改变的量

字符串常量:“helloworld”

整数常量:123

小数常量:3.14

字符常量:‘A’     ‘b’

布尔常量:true, false

空常量:null

013:计算机存储单元:b = bit = 位

				byte=B=字节

1B=8bit

1kB=1024B

1MB=1024KB

1GB=1024MB

基本数据类型:

8B:long double

4B:int float

2B:short char

1B:byte boolean

整数默认int

浮点数默认double

015:定义变量,不给值就不能使用

定义long类型: long l = 1000L;//整形默认int,所以加L

定义float变量:float f = 3.14F;//浮点数默认double

016标识符:

标识符定义规则:

	1字母数字下划线$组成

	2数字不能开头

	3关键字不能使用

	4区分大小写

标识符命名约定:

1标识符是一个单词,首字母小写,name,firstName

2标识符多个字母组成,第一个单词首字母小写,其他字母首字母大写

注意区分类和标识符:类名首字母大写,Student,GoodStudent

017类型转换:

自动转换:小——》大

强制类型转换:大——》小

格式:目标数据类型   变量名 =  (目标数据类型)变量名;

eg:  int k = (int)88.88;

018运算符:操作的符号

算数运算符:

除法/得到的是商

取余%得到的余数

整数相除只能得到整数,想要得到小数,必须有浮点数的参与6.0/4

019:字符+

‘A’=65

‘a’ = 97

'0' = 48   字符零

字符串+操作:

字符串的拼接

+出现在字符串时候,是字符串连接符

+出现在字符串就是连接运算符否则就是算数运算

021赋值运算符:=

+=      x=x+y;  i+=10;   i=i+10;

023关系运算符:

==

!=    不相等 则true   ,   

024逻辑运算符:

短路&&一旦出现false,后面不执行

短路||一旦出现true ,后面不执行

026三元运算符(5.2%)

027案例两只老虎

分析两个变量用于保存老虎的体重,单位kg,int weight1 = 180;

									int weight2 = 200;

用三元运算符实现老虎体重判断,体重相同返回true ,否则返回false

							(wight1 == weight2?)true:false;

028三个和尚

定义三个变量用于保存和尚的身高

int weight1=150;

int weight2=160;

int weight3 = 180;

用三元运算符获取前两个较高身高和尚的身高,并用临时变量存起来

029Scanner数据输入

Scanner使用步骤:1导包,2创建对象,3接收数据

import java.util.Scanner;

Scanner sc = Scanner(System.in);

int i = sc.nextInt();

031流程控制:顺序结构,分支结构,循环结构

031if

032if else

034奇数偶数判断

number%2 == 0 

035

if(){XXX

}else if(){XXX

}else{XXX

}

注意事项:正确数据,边界数据,错误数据

037switch

switch(表达式){

case XXX:  XXX;break;

case XXX:XXX;break;

default:XXX;break;

}

表达式取值可以是:byte,short,int,char,string

case 根表达式进行比较

default:  表示所有情况都不匹配就执行该内容

038:春夏秋冬实例,case控制的语句体后面没有break;会出现穿透现象,不判断下一个case情况下向下运行一直到遇到break,或者switch结束

039:for

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

	循环体语句

}

040(8%):输出数据

控制台输出1-5:for(int i =1; i<=5;i++){}

控制台输出5-1:for(int i=5;i>=1;i--){}

040:求和;1-5的数据和,并把结果在控制台输出

042偶数求和:1-100之间偶数求和,结果在控制台输出

043水仙花数:1水仙花数一共有三位,2个位,10位,100位数字立方和等于原数

个位:number%10

10位:371/10=37,       37%10=3

100位:number/100

任意数字的指定位数值如何求???

先使用整除操作将要求的数字移动到个位,在使用%得到最后1位的值

eg:12345 (万)6789, 123456789/10000%10

044统计:统计水仙花数有多少个并且控制台输出

045while

while(条件判断语句){

循环体语句;

条件控制语句;

}

while循环输出5次helloworld,与fori类比(小初始值,小于条件,++)

046珠穆朗玛峰案例

珠穆朗玛峰8844.43M=8844430MM,一张纸0.1mm,一张纸折叠多少次可以达到珠穆朗玛峰高度???

for适合知道执行次数

while适合执行无确定次数有确定目标

047do…while()

完整格式:	

	初始化语句;

	do{

		循环体语句;	

		条件控制语句;

		}while(条件判断语句)

048三种循环对比

1:dowhile先执行再判断

2:fori ——i仅仅属于for循环,除此循环不能再使用

3死循环:for( ;  ; ){}

死循环while(true){   }

死循环do{    }while(true);

049跳转控制语句:

continue:1-5,6-7,1-5,6-7,1-5,6-7,1-5,6-7,

break:55,56,57,58,59,60, 61,62,63,64,65

continue在循环中基于条件控制语句,跳过某次循环体内容执行,继续下一次执行

break循环中,终止循环体内容的执行,结束当前整个循环

051Random:用于产生一个随机数

使用步骤类似于Scanner:导包,创建对象,获取随机数

import java.util.Random

Random r = new Random();

int number = r.nextInt(10);//0-9

052猜数字游戏:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少

1生成随机数,2猜数字这个操作反复进行while,3键盘录入数字值,4比较输入的数字和系统产生的数据,猜中break

054:idea使用

1空项目JavaSE_Code

2新模块idea_test

idea_test下src创建一个包com.itheima

新建class类

055项目包含模块,模块包含包,包包含class

056内容辅助建

psvm main,sout

ctrl+alt+space(内容提示,代码补全)

ctrl+/(直接注释光标所在行,再来一次就取消)

ctrl+shift+/(选中代码多行注释,)

ctrl+alt+L(格式化)

3.31日

058数组:1一次性声明大量用于存储数据的变量

		2数据同类型数据

数组定义格式:*数据类型【】变量名

		***int[] arr              //定义一个int类型数组,数组名是arr

	数据类型 变量名【】

	int arr []           //定义一个int类型的变量,变量名是arr数组

059数组动态初始化:初始化时候制定数组长度,由系统为数组分配初始值

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

			int [] arr = new int[3];

060数组元素访问:

数组内部保存数据的访问方式:数组名[索引]//索引是数组中数据编号方式

计算机编号从0-n

索引:从0开始,连续,逐渐增减

int默认值0,float默认值0.0,布尔值默认值false,字符默认空字符,引用数据类型默认值null

061内存分配:

int[] arr = new int[3];//右边初始化三个int的连续数组,然后赋给左边arr,左边含义定义一个int型数组,数组名arr,数组指向新初始化的连续数组

System.out.println(arr);

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);

064多个数组指向相同的内存

int[] arr = new int[];//动态分配

arr[0] = 100;

arr[1] = 200;

arr[2]=300;

System.out.println(arr);

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);

int[ ] arr2 = arr;

arr2[0] = 111;

arr2[1] = 222;

arr2[2] = 333;

System.out.println(arr);

System.out.println(arr[0]);

System.out.println(arr2);

System.out.println(arr2[0]);

多个数组指向相同堆内存,任一个发生修改,则值修改,

065数组静态初始化:

格式:数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3};

eg:  int[] arr = new int[]{1,2,3,4,5,6};

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

066数组操作:

1索引越界

2空指针异常

067数组1遍历,2获取最大值

int[] arr = {11,22,33,44,55};

for(int i=0; i< 5; i++){

System.out.println(arr[i]);

}

for(int i=0; i<arr.length;i++){

System.out.println(arr[i]);

}

int [] arr={12,45,98,73,60};

int max = arr[0];

for(int i=1;i<arr.length;i++)

{ if(arr[i] >max){

max=arr[i];	

}

}

069方法概述

方法method:将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

方法特点:1必须先创建才可以使用,该过程称为方法定义

			2方法创建后并不可以直接运行,需要手动使用后才能执行,该过程成为方法的调用。

070方法的定义和调用:

public static void 方法名(){

方法体

}

方法调用格式:方法名();

072方法:

public static void getMax(){

}

073:带参数的方法定义和调用:

public static void 方法名(参数){}

eg:public static void 方法名(数据类型   变量名){}

public static void 方法名(数据类型   变量名1,数据类型   变量名2,){}

定义方法时候参数中数据类型和变量名都不能少

定义方法时候多个参数之间使用逗号分割

带参数方法调用:方法名(参数)

方法调用时候参数的数量和类型必须与方法定义中的设置相匹配

074形参(方法定义中的参数)实参(常量值,变量名)

075带参数方法练习:

076带返回值方法的定义和调用

public static 数据类型  方法名(参数){

	return 数据;

}

public static boolean isEvenNumber(int number){

return true;

}

public static int getMax(int a ,int b){

return 100;

}

078方法的注意事项:

1.方法只能独立定义,不能嵌套定义

2.void表示无返回值,return可以省略,如果加上return后面不加数据

方法通用格式:public static 返回值类型 方法名(){

			方法体;

			return 数据;					

			}

080:方法重载:同一个类中定义的多个方法之间的关系,满足以下条件的方法相互构成重载:

1多个方法在同一个类中

2多个方法具有相同的方法名

3多个方法的参数不相同,类型不同或者数量不同,

方法重载特点:重载仅对应方法的定义,与方法调用无关,调用方式参照标准格式,重载仅针对同一个类中方法的名称和参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

方法重载例子:同一个类中,方法名相同,参数列表不同

		public class MethodDemo{

			public static float fn(int a){}

			public static int fn(int a,int b){}

			}

public class MethodDemo{

public static void fn(int a){}

public static int fn(double a){}

}

调用方法时候,Java虚拟机通过参数的不同区分同名方法

081:方法重载练习;

使用方法重载思想设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)

1定义比较两个数字是否相同的方法compare()的方法,参数选择两个int参数

public static boolean compare(int a,int b){

return a==b;

}

2定义对应的方法重载方法,变更对应的参数类型,参数变更为两个long型参数

082方法的参数传递:

方法参数传递(基本类型):基本数据类型参数,形式参数改变不影响实际参数值

083引用类型方法参数传递(引用类型):引用类型参数,形式参数改变影响实际参数(实际运行过程在视频083)

084数组遍历;

085数组最大值:获取数组中元素最大值,调用方法输出结果

086Debug:程序调试工具,用于查看程序执行流程,可以用于追踪程序执行过程来调试程序

1加断点,2运行加了断点的程序,3看哪里,4点哪里,5删除断点

如果数据来自键盘输入,要输入数据,不然不能继续运行

089减肥计划案例:

需求:输入星期数,显示今天的减肥活动

周一:跑步

周二:游泳

周三:慢走

周四:动感单车

周五:拳击

周六:爬山

周日:好好吃一顿

092不死神兔(斐波那契数列)

1,

1,

2,

3,

5,

094数组元素求和:

元素68,27,95,88,171,996,512,210,求出数组中满足要求的元素和,要求;求和元素个位和十位都不能是7,并且只能是偶数

095数组内容比较;设计一个方法比较两个数组内容是否相同:

静态初始化两个数组

定义一个方法用于比较两个数组内容是否相同,返回值boolean

先比较长度,长度相同再比较内容,长度不相同返回false

096arr={19,28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引,病控制台输出找到的索引值

097反转已知数组:arr={19,28,37,46,50}

交换后arr={50,46,37,28,19}并且控制台输出

for(int start =0,end=arr.length-1; start<=end;start++,end–){

int temp = arr[start];

arr[start]=arr[end];

arr[end]=temp;

}

098评委打分:

六个评委为选手打分,分数0-100,选手最后得分:去掉一个最好分,去掉一个最低分,最后的四个评委平均分(不考虑小数部分)

099面向对象基础:类和对象

对象的定义:汽车,人,电脑

面向对象:人关注具体事物信息

类:类是对现实生活中一类具有共同属性和行为的事物的抽象(不存在于客观世界)

类的特点:

1类是对象的数据类型

2类是具有相同属性和行为的一组对象的集合

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

对象的行为:对象能够执行的操作(对象的功能,能够干什么)

区分好类和对象的区分和关系:类是对象的抽象,对象是类的实体

100类的定义:

类是Java程序基本组成单位

类是什么:是现实生活中具有相同属性和行为事物的抽象,确定对象将会拥有属性和行为

类=属性+行为

属性:类中通过成员变量体现

行为:类中通过成员方法体现,(去掉static)

定义一个类

public class 类名{

成员变量

方法1

}

101:对象的使用:

创建对象:

类名 对象名 =new 类名();

Phone p = new Phone();

对象使用:

对象名.变量名

p.brand

使用成员方法:

对象名.方法名()

p.call();

102学生:

定义一个学生类,定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法使用

103对象栈内存,堆内存

栈:方法

堆:数据

104多个对象栈内存,堆内存

106成员变量和局部变量:

成员变量:类中方法外的变量

局部变量;方法中的变量

成员变量和局部变量区别:

1.成员变量在类中,方法外。局部变量在方法内

2.成员变量在堆内存,局部变量在栈内存

3.生命周期不同:成员变量随着对象存在而存在,消失而消失

局部变量。随着方法调用而存在,随方法调用而消失

4成员变量有默认初始值,局部变量没有默认初始值,先定义后使用

107privated关键字:

1是一个权限修饰符,可以修饰成员变量和成员方法,作用是保护成员不被别的类使用,被privat修饰的成员只在本类才能访问

private修饰的成员变量,如果需要被其他类使用,需要相应的操作:

get变量名()方法,用于获取成员变量的值,方法用public修饰

set变量名(参数)方法,用于设置成员变量的值,方法用public修饰、

109this:

111封装:

面向对象三大特征:封装,继承,多态

封装:面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部,外界无法直接操作

封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,成员变量private,提供对应的getXXX() setXXX() 方法

第一周:难点攻克

新建操作:file——project structure——modules——+——

导入模块:file——project struc——import modules

删除模块:在模块所在文件夹删除模块

因为只new 了一个Student(),所以s1,s2内存中都指向这一个new Student()

输出时因为指向同一个内存,所以输出结果也一样

private:关键字:是一个权限修饰符,可以修饰成员变量,成员方法

作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

private修饰的成员变量,如果被其他类使用,需要提供get变量名()方法,获取成员变量的值,public修饰

提供set变量名(参数),用于设置成员变量的值,public修饰

this关键字:用来指代变量名称(成员变量)

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问(例如private,getXXX(),serXXX())方法

封装优点:通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码复用性

构造方法是一种特殊的方法:

格式:public class 类名{

	修饰符  类名 (参数)

	}

public class Student{

public Student();

}

构造方法主要是完成对象数据初始化

115API:application programming interface应用程序编辑接口

JavaAPI:指的是jdk中提供的各种功能Java类,这些类将底层的实现封装起来,不需要关心这些类如何实现,只要学习这些类如何使用,可以通过帮助文档来学熟悉API如何使用

116API练习;

按照帮助文档使用步骤学习Scanner类使用,并实现键盘录入一个字符串,最后输出在控制台

Object

String

StringBuilder

Scanner

Math

Random

Date

DateFormat

SimpleDateFormat

Calendar

System

BigDecimal

117String

String在Java.lang包下,使用不需要导包

String 代表字符串,Java程序中所有字符串文字都被现实为此类的实例,也就是说Java程序中所有的双引号字符串都是String类对象

字符串特点:字符串不可改变,他们的值在创建后不能更改,String类不能被改变,但是可以被共享,字符串效果上相当于字符数组char[] ,但是底层原理是字节数组byte[]

118String构造方法;

String s4 ="abc";//推荐使用方式,直接赋值
System.out.println("s4"+s4);

119String对象特点

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

120字符串比较

==:基本数据类型,比较的是数值是否相同

==:引用类型,比较的是地址值是否相同

字符串是对象,他的比较内容是否相同,通过一个方法实现:equals()

public boolean equals(object object)将此字符串与是定对象比较,由此比较的字符串对象,所以参数直接传递一个字符串

121用户登录

已知用户名和密码,用程序实现模拟用户登录,总共三次机会,登陆之后给出提示

122遍历字符串

键盘录入一个字符串,使用程序实现在控制台遍历字符串

1键盘录入一个字符串,Scanner实现

2遍历字符串,首先要获取字符串中每一个字符

public char charAt(int index):返回指定所引出char的值,字符串的索引也是从0开始

3遍历字符串,其次要能够获取到字符串长度,

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

数组长度,数组名.length

字符串长度:字符串对象.length()

4遍历字符串通用格式

for(int i=0;i<s.length;i++){

s.charAt(i);

}

122字符串遍历

package com.ALL;

import java.util.Scanner;

public class Test122_StringTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个字符串");
        String line = sc.nextLine();

       // System.out.println(line.charAt(0));
        //System.out.println(line.charAt(1));
        //System.out.println(line.charAt(2));

        //for (int i = 0; i < 3; i++) {
          //  System.out.println(line.charAt(i));
        //}

        //System.out.println(line.length());
        for (int i = 0; i < line.length(); i++) {
            System.out.println(line.charAt(i));
        }
    }
}

123统计字符次数

键盘录入一个字符串,统计该字符串中大写字符,小写字符,数字字符出现次数(不考虑其他字符)

1键盘录入一个字符串,Scanner实现

2统计三种类型字符,定义三个统计变量,初始值0

3遍历字符串,得到每一个字符

4判断该字符属于哪一种类型,然后对应类型统计变量+1

加入ch是一个字符,要判断属于他的大写,小写,还是数字,直接判断字符是否在对应范围内即可

大写字母:ch>=‘A’&&ch<=‘Z’

小写字母:ch>=‘a’&&ch<=‘z’

数字:ch>=‘0’&&ch<=‘9’

输出三种类型字符个数

public class Test123_StringStatictics {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");

        String line = sc.nextLine();

        int bigCount=0;
        int smallCount=0;
        int numberCount=0;

        for (int i = 0; i < line.length(); i++) {
            char ch=line.charAt(i);

            if(ch>='A'&&ch<='Z'){
                bigCount++;
            }else if(ch>='a'&&ch<='z'){
                smallCount++;
            }else if(ch>='0'&&ch<='9'){
                numberCount++;
            }

        }
        System.out.println("大写字母个数"+bigCount);
        System.out.println("小写字母个数"+smallCount);
        System.out.println("数字个数:"+numberCount);

    }
}

124字符串拼接

定义一个方法,把int数组中的数据按照指定格式拼接成字符串返回,调用该方法并在控制台输出结果,数组int[] arr={1,2,3} 执行方法之后输出结果[1,2,3]

步骤:1定义一个int数组,静态初始化数组元素的初始化

	2定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,返回值类型String,参数列表int[]arr

3在方法中遍历数组,按照要求进行拼接,

4调用方法,用一个变量接收结果

5输出结果

package com.ALL;

public class Test124_JointString {
    public static void main(String[] args) {
        int[] arr={1,2,3};



        String s= arrayToString(arr);
        System.out.println("s:"+s);
    }



    public static String arrayToString(int[]arr){
        String s="";
        s+="[";

        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length-1){
                s+=arr[i];//最后一个
            }else{
                s+=arr[i];
                s+=", ";
            }
        }

        s+="]";
        return s;
    }
}

面向对象概述:

1类与方法

2构造方法

3访问权限

4继承

5多态

6抽象与接口

7内存分析

举报

相关推荐

0 条评论