2021-03-19

JAVA

public java 关键字,功能:访问修饰符之一。
class java关键字,功能:类,标识符,说明该文件是
Hello World 类名,请遵从命名规范 :

  1. 类名要见名知意,驼峰原则
  2. 首字母大写,其余单词首字母大写
  3. 单词间不要有空格
  4. 数字不能放开头
  5. #%等不能使用
  6. _ 可以使用,但是阿里编程规范禁止使用和 可以使用, 但是阿里编程规范禁止使用和 可以使用,但是阿里编程规范禁止使用和放在开头结尾一
  7. Java代码中区分大小写
  8. 命名不能使用java关键字
    以下是国内规范约束
  9. 建议不要写拼音,更不能写中文
    {} 类体,包含属性和方法,一定要注意{}是成对出现的
    |public static void main(String[]args{…})|这个正题叫做方法
    主方法是程序的入口
    static 关键字,功能:静态修饰符
    void 关键字,功能:返回值类型之一(空)
    main 方法名.特殊的名字,我们不能随意使用.是java程序的主方法,是java程序的唯一入口
    名字固定.只有main方法会执行
    其他方法的方法名,要首字母小写,其他要求与类名一样
    ()参数列表:该方法执行时需要的数据
    String 参数类型之一
    String[ ]数组
    args 参数名:首字母小写,其他与方法名类似
    主方法的格式是固定的
    /

常量

常量:在程序的运行期间,固定不变得量
常量的分类:
字符串常量:凡是用双引号引起来的部分,叫做字符串的常量"今天是我学习java的第二天"
整数常量
浮点数(小数)常量
字符常量
布尔(boolean)常量
空常量 null

变量

变量:即变化的量

  • 定义变量
  • 给变量赋值
  • 定义并赋值
  • 一般建议定义并赋值
  • 注意

    • 变量没有赋值是不能使用的
    • 变量的作用域问题
    • 变量的重复定义

关键字

在这里插入图片描述

JAVASE基础篇

转义字符
package com.hmk.basic;

public class HelloWorld {
    public static void main(String[] args){
        //转义字符
        //1.输出"你好世界"
        System.out.println("\"你好世界\"");
        //2.输出\你好世界\
        System.out.println("\\你好世界\\");
        //3.换行符
        System.out.println("你好\n世界");
        //4.制表符
        System.out.println("你好\t世界\t你好\tJAVA");
    }
}

输出结果:
"你好世界"
\你好世界\
你好
世界
你好	世界	你好	JAVA

计算机中的存储单元

  1. 最小的信息单位bit(比特)
  2. 最小的储存单位Byte(字节)
  3. 两者之间的关系1Byte=8bit
  4. 汉字占用字节数两个字节

8 Byte = 1 B
1 KB (kilobyte千字节)=1024 B
1 MB (Megabyte 兆字节 简称“兆”)=1024 KB
1 GB (Gigabyte 吉字节 又称“千兆”)=1024 MB
1 TB(Trillionbyte 万亿字节 太字节)=1024 GB,其中1024=2^10 ( 2 的10次方)
1 PB(PetaByte 千万亿字节 拍字节)=1024 TB
1 EB(Exabyte 百亿亿字节 艾字节)=1024 PB
1 ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB

基本数据类型

分类:
     基本数据类型:整数,浮点,字符,布尔
     引用数据类型 如 类,数组,接口等

数据类型关键字内存大小取值范围
字节型byte1个字节1B-128~127 2^7-1
短整型short2个字节2B-32768~32767 2^15-1
整型int4个字节4B21开头的十位数 2^31-1
长整型long8个字节8B92开头的十九位数 2^63-1
单精度浮点数float4个字节4B-1.4013E-45~3.4028E+38
双精度浮点数double8个字节8B4.9E-324~1.7977E+308
字符型char2个字节2B0~65535
布尔类型boolean1个字节1Bture,false

备注JAVA中默认的基本数据类型中,整型为int,浮点型为double

引用数据类型

  • 数组
  • 接口

运算符

算数运算符

运算符运算规则范例结果
+正号+33
+加法1+34
+字符串连接“中”+“国”“中国”
-负号int a=3;-a-3
-3-12
*2*36
/5/22
  • 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串
    -除法"/"当两边为整数时,取整数部分,舍余数,当其中一遍为浮点型时,按正常规则相除

基本数据类型转换

  • 自动转换 范围小的可以向范围大的进行转换byte < short < int <long <float <double
  • 强制转换 范围大的向范围小的进行转换,需要强制类型转换 小范围数据类型 标识符 = (小范围数据类型) 变量名称;

ASCII

  • (0-9)对应(48-57),(A-Z)对应(65-90),(a-z)对应(97-122)
  • 所有的编码表都支持ASCII编码表在这里插入图片描述

int和char类型转换

  • char转换成int,字符型和数值型进行转换的时候都会查 询编码表,由于int4个字节,char2个字节,所以属于自动的 类型转换
  • int转换成char,需要强制类型转换
  • 如果char是汉字,转换成整数查询的就是Unicode编码表
  • char类型的最大整数是65535,因为char没有负数
  • char可以直接赋值为Unicode编码,格式为\uxxxx,十六 进制

赋值运算符

运算符运算规则范例结果
=赋值int a=22
+=加后赋值int a=2,a+=24
-=减后赋值int a=2,a-=20
*=乘后赋值int a=2;a*=24
/=整除后赋值int a=2,a/=21
%=取模后赋值int a=2,a%=20

比较运算符

运算符运算规则范例结果
==相等于4==3False
!=不等于4!=3True
<小于4<3False
>大于4>3True
<=小于等于4<=3False
>=大于等于4>=3True

逻辑运算符

运算符运算规则范例结果
!Flase
&&短路与false&&trueFlase
II短路或false II trueTrue
  • 逻辑运算符运算结果是布尔类型
  • 布尔表达式:是指运算结果是布尔值的式子
  • &与/和(and) 全真才真,一假就假
  • |或,全假才假,一真就真
  • ! 非/取反,非错即对
  • && 短路与,因为&是一错就错,所以当&&前已经是false时,那么就可以确定整体表达式的结果false,后续的表达式不再执行
  • ||短路或,与上类似,只要一个表达式的结果能确定整体表达式的结果,反面表达式就短路不执行
  • boolean r1 = 1>0 && 2<0; //
  • boolean r1 = 2>0 || 1>0;
    -boolean r1 = 1>0 & 2<0;
    -boolean r1 = 2<0 | 1>0;
System.out.println((1 < 0 || 1 / 1 == 1)&&(1 >0 || 1 / 0 == 1));
  1. 先判断两个小括号里true/fales
  2. 第一个小括号:1< 0为假 1 / 1 == 1为真 == > 第一个小括号结果为true
  3. 第二个小括号:1>0为true 因为短路或一真就真, 后面的就不做判断被短路 ==> true
  4. 小括号1:true 小括号2:true == > true

位运算符

运算符运算规则范例结果
!&与1&0,0&0,1&!0,0,1
I1I0,0I0,1I11,0,1
^异或1 ^ 0,0 ^ 0,1^11,0,0
  • ^运算规律
  • 10=1,00=0,任何数和0相异或得到的是这个数本身
  • 01=1,11=0,任何数和1相异或得到的是这个数的相反
  • 一个数自己和自己异或得到的是0

三目运算符

  • 必须有结果,?后必须跟有东西
System.out.println( 1<5 ? “success” : “fa il” );

选择控制语句

  • if控制语句
  • 当括号内的内容是true的时候,执行{}中的内容
//并列if判断,无论上面的条件成立与否,下面的i f都会进行判断 
if(a < b){ 
System.out.println("a小于b"); 
}if(a > b){ 
System.out.println("a大于b");
 }
if(a == b){
 System.out.println("a等于b");
  }

if….else…控制语句

//上面条件成立下面就不在判断 
if(a < b){ 
System.out.println("a小于b");
 }else{
 System.out.println("a不小于b"); 
 }

if…else if…else控制语句

//上面条件成立下面就不在判断 
if(a < b){ 
System.out.println("a小于b"); 
}else if(a > b) { 
System.out.println("a大于b"); 
}else { 
System.out.println("a等于b"); 
}

多条件判断

if(1<a&&a<5){ 
System.out.println("并且是&&,两个条件都 为真"); 
}if(a==1 || a==3){ 
System.out.println("或者是||,两个条件至 少有一个为真");
}if(a!=3 || a!= 4){ 
System.out.println("或者是||,两个条件至 少有一个为真,!=表示不等于");
 }

switch case语句

  • switch后边的表达式只能是整型字符型(byte, short,int,char),枚举类型,其中jdk7之后支持 字符串型.

		switch (n) {
		case n: //case后的值得数据类型要与switch的值数据类型一致
		//case值后 是冒号!
		//语句1
		break; //如果没有break,会击穿下面的case,直接执行其中的语句
		case n+1: 
		//语句2
		break; 
		default: 
		//break; 
	 }

Scanner类

  • 属于引用类型,创建的时候需要固定格式 数据类型 变量 名 = new 数据类型();
  • 需要导入所在的包,导包格式: import java.util.Scanner;
  • 创建对象 Scanner sc = new Scanner(System.in);
  • 获取输入的整数 int a = sc.nextInt();
  • 获取输入的字符串 String str = sc.nextLine();
  • 注意sc.nextInt()和sc.nextLine()会中断程序

Random类

  • 需要导入所在的包,导包格式: import java.util.Random; 创建对象 Random ran = new Random();
  • 获取随机整数范围是[0,50): int a = ran.nextInt(50);
  • 获取随机小数范围是[0,1): double b = ran.nextDouble();
  • 如何获取一个[a,b]的随机数 int a = rand.nextInt(b - a + 1) + a;

循环语句

循环四要素

  • 循环初始值
  • 循环控制条件
  • 循环体
  • 循环迭代
int i = 1;
while (i < 6){
	System.out.println("你好");
	i++;
 }

while循环

  • 语法
    while(布尔表达式){
    循环体;
    循环迭代;(++ / --)–>控制循环次数
    }
  • 执行流程
  1. 先判断while后的表达式
  2. 如果是ture,就行{}内的语句
  3. 执行完{}内的语句,再次判断while后的表达式
  4. 当while后的结果是false就不再执行{}内的内容,
  5. 继续执行后续
//输出1-100中的奇数偶数
int i = 1int j = 1;
int k = 2;
while(i < 51){
System.out.println(j+"+");
System.out.println();
System.out.print(k+"");
j = j + 2;
k = k + 2;
i++;
}
  • while:先判断,后执行
  • do while循环 --》直到型
  • 语法:先执行后判断
  • do{
  •   循环体;
    
  •   迭代
    
  • }while(布尔表达式);
  1. 先执行do中的循环内容
  2. 判断while后的表达式
  3. 表达式为true,再执行do中内容
  4. 在判断
  5. 直到判断为false时,跳过循环,执行后续
  6. do while至少会执行一次

for(int i=0;i<=10;i++){
System.out.print(i+" ")
}
1.先执行初始值1处,切只执行一次
2.开始2处判断,如果为true,就向下执行循环体
3.执行完成,执行迭代
4.继续判断,如果判断为false,就跳出for结构,执行后续
for循环
for(初始值;控制条件,迭代){
循环体;
}
变量名:在同一作用域内不能重复
变量在这一敢为内有效
同一作用域;在同一个最近的{}内
//输出1-10

for(int i = 1; i <= 10;i++){
System.out.print(i+" ")
}
System.out.println("\n");
}

Scanner

Scanner 属于引用类型,创建的时候需要固定格式
数据类型 变量名 = new 数据类型();

Random

//产生随机数
数据类型 变量名 = new 数据类型();

public static void main(String[] args) {
        String[] nameArr = {"张新宇","杨星宇","黄梦柯","龙朝涛","李秋霜"};
        for (int i = 10; i > 0; i--) {
            try {
                Thread.sleep(1000);//
            }catch (InterruptedException e){
                e.printStackTrace();
            }
            System.out.println(i);
        }
        System.out.println("就是你 --> "+nameArr[new Random().nextInt(5)]);//[0,5)
    }

数组

package com.hmk.basic;

public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {37, 11, 33, 44, 55};
        //定义一个最大值max,把索引的第一个值赋给max
        int max = arr[0];
        //遍历索引值0之后的每一个元素
        for (int i = 1; i <= arr.length - 1; i++) {
            //当有元素大于max,把该元素的值重新赋值给max
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        //数组遍历结束,最大值变量保存的就是数组当中最大值
        // System.out.println("数组的最大值是:"+ max);
        // 排序从小到大-->从大到小
        // 外层循环控制趟数
        for (int j = 0; j < arr.length - 1; j++) {
            for (int i = 0; i < arr.length - 1 - j; i++)
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
        }
        System.out.println("排序后:");
        for(int i=0;i<=arr.length-1;i++){
            System.out.println(arr[i]+"");
        }
    }
}

面向对象的三大特点

三大特点:封装、继承、多态

封装

原则:将属性【隐藏起来】起来,如果想要访问类中的某个属性,提供【公共的访问方法】对其访问。
封装的步骤:

  1. private 关键字来修饰成员变量
  2. 对需要访问的成员变量,提供getXxx()方法和seXXX()方法
    注:get是取值 set是赋值

封装时的权限控制符区别如下

在这里插入图片描述
封装的操作
private的含义

  1. private是一个权限修饰符,代表最小的访问修饰符
  2. 可以修饰成员变量(全局属性),也可以修饰成员方法
  3. 被private修饰的成员变量和成员方法,只能在本类中去访问
private 使用格式

private 数据类型 变量名;
封装的好处

  1. 良好的封装能够减少代码之间的耦合性
  2. 类内部的结构可以进行随意更改
  3. 可以对成员变量(全局属性)进行更精准的控制
  4. 隐藏信息,实现细节
封装优化1_this关键字

我们发现seXxx()方法当中形参名字不符合我们标识符的命名规范–见名知意,如果修改成和成员变量相同的名字,会触发java 程序当中的就近原则,会把方法内额变量统统的变为形参变量,导致赋值失败,我们就可以采用【this】关键字来解决,变量重命名的问题。

this的含义

this代表的是所在类的当前对象的引用(地址值),即对象对自己引用
备注:意思是方法被那个对象调用,方法中的this指代的就是代表的是哪个对象,即谁调用,this就是谁。
this的使用格式
This.成员变量名
使用t his关键字修饰方法中的成员变量,解决成员被隐藏的问题:


public class Man {
    //1.使用private关键字修饰成员变量
    private String name;
    private int age;
    //2.提供相应的getXxx()方法和seXxx()方法
    //可以访问类中成员变量
    //getXxx() 获取类中成员变量信息
    public String getName(){
        return name;
    }
    //setXxx()设置类中成员变量
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return  age;
    }
    //seXxx()设置成员中变量
    public void setAge(int age){
        this.age=age;
    }

封装优化2_构造方法

当一个对象被创建的时候,构造方法用来初始化对象,给对象的成员变量赋初值
备注:无论你是否在封装类里 定义构造方法,当类被定义出来的时候,系统会自动的分配一个构造方法-无参构造方法,一旦在类中显示的定义构造方法,java会自动提供默认无参构造就会被自动销毁(被回收)

构造方法的定义格式

修饰符 构造方法名(参数列表){
//方法内容

}
//构造方法没有返回值,构造方法名和类名要保持完全一致
注意事项:

  1. 构造方法的方法名必须要与类名完全保持一致
  2. 构造方法不用声明返回值类型,连void也不需要
  3. 构造方法中不能用return返回一个具体的值
  4. 如果定义类时没有显式的定义构造方法,系统会给一个默认的无参构造方法
  5. 一旦定义了一个构造方法,那么编译期会回收提供的隐式构造方法
  6. 构造方法可以重载:方法名相同,参数列表不同

继承:

多态:

具有相同的特点(属性)和行为(方法)的集合的总称

对象

是某一类事物具体的体现(实例),将类的抽象【概念具体化

属性

是一类事物的特点或特征

方法

是一类事物可以进行的行为或动作(方法的命名遵循驼峰方法,首字母小写,其余单词首字母大写)

[访问修饰符] 返回值类型 方法名(参数){…【方法内执行的语句】}
返回值类型:该方法执行后的结果的数据类型
基本数据类型/引用数据类型(int float doublering Array)
void 空,方法执行后,不返回任何数据
如果方法需要返回值
1. 需要在返回值类型处写上需要返回数据所对应的数据类型
2. 在方法体的最后需要使用return值的格式,将值明确返回
参数列表:
1. 形式参数:该方法执行可能会用到的数据
2. 形式参数的写法:数据类型,参数名
3. 列表内可写多个参数,也可不写
4. 有参数时,在使用方法时要调用,必须给参数先赋值
{}方法体
方法功能的具体体现:

无返回值,无参数

无返回值,有参数

有返回值,无参数

有返回值,有参数

两个引用指向一个对象,s1是对象名,也是变量,可以叫做对象的引用
s1应用的是内存中,堆内存中的对象的地址值,
student s2=s1,将s1的地址值赋值(引用)给s2,所以s1与s2操作的是同一个对象

定义位置作用范围初始值在内存中的存储位置生命周期修饰符
成员变量类中,方法外类中有默认值堆内存随着对象的创建而存在,对象消失就消失可使用修饰符
局部变量方法中或方法声明上(形式参数)方法中无默认值, 必须先定义赋值再引用栈内存随着方法的调用而存在,调用结束就消失不使用修饰符

方法的重载(Overload):

  1. 方法名一样,参数列表不一样的方法之间叫做重载
  2. 参数列表不同:不同的参数个数,参数类型,参数顺序
    //方法重载的演示 public void what(){ //个数不同 } public void what(String eat,int age){ //类型不同 } public void what(int age,String eat){ //顺序不同 }
  3. 方法重载与什么无关:
    • 与参数名称无关
    • 与方法返回值类型无关
    • 与方法修饰符无关
  4. 标准类——JavaBean
    是java语言编写类的一种标准规范,符合java的类
    什么样的标准叫JAVABean
  5. 所有成员变量都要使用private关键字修饰
  6. 要为每一个成员变量提供getxx()和setxx()方法
  7. 编写一个无参构造方法
  8. 最好再提供一个全参构造方法

同样具有与Java 一样的这些基本数据类型,byte , short,int,long, float, double,char,boolean
注意:Scala 有与Java有一些不太一样的地方,Scala定义的这些基本数据类型,都是类,例如:Int类型《-------》scala.Int 类
有个特殊的地方,String类型没有自己定义类,而是完全使用java里,java.long

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值