Java基础

本文详细介绍了Java编程的基础知识,包括转义字符、代码规范、数据类型、运算符、类型转换、数组、面向对象编程、构造器、this关键字及其作用域。内容涵盖变量、注释、运算符优先级、字符串处理、数据类型的转换、程序控制结构等方面,是Java初学者的必备教程。
摘要由CSDN通过智能技术生成

转义字符

  1. \t 制表位
  2. \n 换行符
  3. \r 一个回车
  4. \\: 一个\
    注意
    System.out.println(“编程语言**\r\n**基础”)
    输出结果:idea中为:基础

注释

  1. 单行注释://
  2. 多行注释:/**/ (不允许多行注释嵌套使用)
  3. 文档注释 :/***/

2.代码规范

  1. 类或方法的注释采用(javadoc 标签):@author
  2. 使用TAb操作实现缩进,默认向右边移动,shift+tab整体向左移动
  3. 运算符和**=**两边习惯各加一个空格。如:2 + 4 * 5
  4. 行宽不超过80
  5. 代码编写次行风格行尾风格

Tips
相对路径:从当前目录开始定位,形成的一个路径
绝对路径:从顶级目录d,开始定位,形成的路径

  1. JDK,JRE,JVM关系
    JDK = JRE + java开发工具
    JRE = JVM + 核心类库

2.程序中 + 号的使用

  • 左右两边都是数值型时,则做加法运算
  • 左右两边有一方为字符串,则做拼接运算

3.数据类型

  1. java 数据类型分为两大类基本数据类型,引用类型
  2. 基本数据类型有8中数值型[byte,short,int,long,float,double,char,boolean
  3. 引用类型[类,接口,数组,以及特殊的null类型。

在这里插入图片描述
自动类型转换:java程序在进行赋值或运算时,精度小的类型自动转换为精度大的数据类型。
在这里插入图片描述
浮点数:

  1. 浮点数默认为 double
    浮点数 = 符号位 + 指数位 + 尾数位
    (尾数部分可能丢失,造成精度损失)

自动类型转换

  1. (byte,short)char 不能相互自动转换
  2. byte,short,char进行运算会自动提升为 int
  3. Boolean 不参与转换

强制类型转换

  1. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
  2. byte和short,char类型在进行运算时,当做int类型处理
  3. char类型可以保存int的常量值,但不能保存int的变量值,需要强转

4.运算符

取模运算 %
在%的本质。a%b看公式 a % b = a - a / b * b
当a是小数时,a%b= a-(int)a / b * b
注意: 有小数运算,得到的结果是近似值。判断两个数相等需要看 差的绝对值在某个精度范围。
即计算时看 被除数的正负决定整体正负
在这里插入图片描述
逻辑运算符
短路与&&:如果第一个条件为falsee,后面的条件不再判断
逻辑与&:如果第一个条件为falsee,后面的条件仍然会判断

短路或||:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
逻辑或 |:不管第一个条件是否为true,第二个条件都要判断,效率低

逻辑异或
a^b:叫逻辑异或,当 a 和 b 不同时,则结果为true,否则为false

!a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true

原码、反码、补码
在这里插入图片描述
补码可以统一正数和负数
java 中有 7 个位运算(&、|、^、~、>>、<<和 >>>)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Tips

  1. String 类型转换成 double 类型
    (通过Double.parseDouble包装类)
  2. char 类型转换成 String 类型
    (通过 String str = char +" ";)
  3. String类型转换成char类型
    str=“abc”,str.charAt(0) 得到str的第一个字符
char key =sc.next().charAt(0);
            if (key == 'n')

5.程序控制

switch 和 if 的比较

  1. 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。
  2. 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

break

  1. 如果没有break,默认退出最近的循环体
  2. break语句出现在多层嵌套的语句块中,可以通过标签指定跳出的是哪一层语句块
    在这里插入图片描述
    continue: 用于结束本次循环,继续下次循环。
    return: 用在方法时,表示跳出方法。

6.数组、排序、查找

数组的定义:
1.数据类型 数组名 [ ] = new 数据类型 [ 大小 ]
2.数据类型 [ ] 数组名 = new 数据类型 [ 大小 ]

数组使用注意事项和细节

  1. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
  2. 数组创建后,如果没有赋值,有默认值 int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null
  3. 数组属引用类型,数组型数据是对象(object)

数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值
在这里插入图片描述

二维数组
1.动态初始化
类型 [ ] [ ] 数组名 = new 类型 [ 大小 ] [ 大小 ]

int a[] [] = new int [2][3];

2.静态初始化

int [ ] [ ] arr ={ {1,1,1 ,{ 2,3,4},{ 6,7,8 }} };
String strs[]={'a',b','c}//error,char->String 
String[]strs={"a""b""c"}//ok 
String[]strs =new String{"a""b""c"}//error 
String strs[]=new String]{"a""b""c"}//ok 
String[]strs=new String[3]{"a""b""c"]//error,编译不通过

在这里插入图片描述

7.面向对象编程(基础)

  1. 类是抽象的,概念的,代表一类事物,比如人类,猫类…, 即它是数据类型.
  2. 对象是具体的,实际的,代表一个具体事物, 即 是实例.
  3. 类是对象的模板,对象是类的一个个体,对应一个实例

成员变量 = 属性 = field(字段)
属性如果不赋值,有默认值,规则和数组一致。
具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000, boolean false,String null

Java 内存的结构分析

  1. 栈: 一般存放基本数据类型(局部变量)
  2. 堆: 存放对象(Cat cat , 数组等)
  3. 方法区:常量池(常量,比如字符串), 类加载信息

方法调用

  1. 同一个类中的方法 可以 直接调用。
  2. 跨类中的方法A类 调用 B类的方法:需要通过对象名调用(需要先创建B类对象,然后在调用)

成员方法传参机制
引用类型传递的是地址(传递的值 是地址),可以通过形参影响实参。

方法重载(OverLoad)
1)方法名:必须相同
2)形参列表:必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)

可变参数
java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。 就可以通过可变参数实现

基本语法:访问修饰符 返回类型 方法名(数据类型... 形参名) { }

Tips
1)可变参数的实参可以为0个或任意多个
2)可变参数的实参可以为数组
3)可变参数的本质是数组
4)可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后
5)一个形参列表中只能出现一个可变参数

作用域

  1. java中,主要变量就是属性(成员变量)和局部变量。

  2. 局部变量一般是指在成员方法中定义的变量。

  3. 作用域的分类
    全局变量:也就是属性,作用域为整个类体
    局部变量:除属性之外的其他变量,作用域为为定义它的代码块中

  4. 全局变量(属性)可以不赋值,直接使用,因为有默认值。
    局部变量必须赋值知乎才能使用,没有默认值。
    Tips:
    1.属性和局部变量可以重名,访问遵循就近原则
    2.在用一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。
    3.属性生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。局部变量,生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而销毁。即在一次方法调用过程中。
    4.作用域范围不同
    全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)局部变量:只能在本类中对应的方法中使用
    5.修饰符不同
    全局变量/属性可以加修饰符
    局部变量不可以加修饰符

构造器
语法:[修饰符] 方法名(形参列表){ 方法体; }

构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。

特点

  1. 方法名和类名相同

  2. 没有返回值

  3. 在创建对象时,系统会自动的调用该类的构造器完成对象的初始化

    Tips:
    1.一个类可以定义多个不同的构造器,即构造器重载
    2.构造器名和类名要相同
    3.构造器没有返回值
    4.构造器是完成对象的初始化,并不是创建对象
    5.在创建对象时,系统自动的调用该类的构造方法
    6.如果没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器),比如Dog{ } 使用javap指令 进行反编译
    7.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显示的定义一下,即Dog{ }

this关键字
this简单来说:哪个对象调用,this就代表哪个对象
1)this 关键字可以用来访问本类的属性、方法、构造器
2)this 用于区分当前类的属性 和 局部变量
3)访问成员方法的语法: this.方法名( 参数列表 )
4) 访问构造器语法:this(参数列表);
注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一 条语句
5) this 不能在类定义的外部使用,只能在类定义的方法中使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

amant 柒少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值