java基础

这篇博客详细介绍了Java的基础知识,包括注释、标识符、关键字、数据类型、变量、常量、运算符、用户交互、循环结构、选择结构、数组、方法、面向对象的特性以及异常处理。讲解了Java的强类型特性、类型转换、方法重载、数组的声明和初始化,还探讨了面向对象的封装、继承、多态概念。同时,提到了异常的结构和处理,以及如何使用Scanner类进行用户交互。
摘要由CSDN通过智能技术生成

Java基础笔记

  1. 注释、标识符、关键字
  2. 数据类型
  3. 类型转换
  4. 变量、常量

注释

  • 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
  • 注释并不会被执行,是给我们写代码的人看的
  • 书写注释是一个非常好的习惯
  • 平时写代码一定要注意规范。
public class HelloWorld {
   
    public static void main(String [] args){
   
        //这是单行注释
        //输出hello,world
        System.out.println("hello,world");

        //这是多行注释!
        /*
        这是多行注释
        用起来很方便
        以后我们用的很多
        */

        //javaDoc:文档注释  /** */
        /**
         * @Description HelloWorld
         * @Author 学习Java
         */
        
    }
}

标识符和关键字

关键字

访问控制:

private 私有的
protected 受保护的
public 公共的

类、方法和变量修饰符

abstract 声明抽象
class 类
extends 扩允,继承
final 终极,不可改变的
implements实现
interface 接口
native 本地
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失

程序控制语句

break 跳出循环
continue 继续
return 返回
do 运行
while 循环
if 如果
else 反之
for 循环
instanceof 实例
switch 开关
case 返回开关里的结果
default 默认

错误处理

catch 处理异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常

包相关
import 引入
package 包

基本类型

boolean 布尔型
byte 字节型
char 字符型
double 双精度,
float 浮点
int 整型
long 长整型
short 短整型
变量引用

super 父类,超类
this 本类
void 无返回值

标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名称都被称为标识符

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始;"大小写十分敏感“

  • 首字母之后可以是字母(A-Z或者a-z),美元符($),或者下划线(_)或者数字的任何字符组合;“特殊符号不能使用”

  • 不能使用关键字作为变量名或者方法名。

  • 合法标识符举例:age、 $salary、 _value、 _1_value

  • 非法标识符举例:123abc、 -salary、 #abc

  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音

数据类型

强类型语言

  • 求变量的使用要严格符合规定,所有变量都必须先定以后才能使用 安全性高,但速度慢。

弱类型语言

Java的数据类型分为两大类

  • 基本类型(primitive type)

img

public class Demo01 {
   
    public static void main(String[] args) {
   
        //八大基本类型

        //整数
        int num1 = 10;  //常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 40L; //Long型要在数字后面加个 L

        //小数: 浮点数
        float num5 = 10.1F; //float类型要在数字后面加个 F 否则会报错
        double num6 = 3.234729874923492374728934;

        //字符
        char name = 'A'; //如果写两个字就会报错  包括 'AB'
        String like = "学号Java"; //字符串String不是关键字!切记
        
        //布尔值: 是非
        boolean flag = true; //是
        boolean flags = false;  //非
    }
}
  • 引用类型(reference type)

    • 接口
    • 数组

    什么是字节

    • 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

    • 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示。

    • 1B(byte,字节) = 8bit(位)

    • 字符:是指计算机中使用的字母、数字、字和符号

    • 1bit表示1位

    • 1Byte表示一个字节 1B=8b

    • 1024B=1KB

    • 1024KB=1M

    • 1024M=1G

整数拓展

//整数拓展: 进制   二进制0b  十进制  八进制0  十六进制0x
int i1 = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x
System.out.println(i1);  // 10
System.out.println(i2);  // 8
System.out.println(i3);  // 16

浮点数拓展

//浮点数拓展  问:银行业务怎么表示?--->BigDecimal  数学工具类
//float double 是有限的,离散的,所以他会舍入误差! 大约  接近但是不等于
//最好不要用浮点数进行比较
float f = 0.1f; // 0.1
double d = 1.0/10; // 0.1
System.out.println(f==d);  //false
float a = 2387429387489f;
float b = a + 1;
System.out.println(a==b); //true

字符拓展

//字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1); // a
System.out.println((int)c1); //97    强制转换---->所有的字符本质都是数字
System.out.println(c2); //中
System.out.println((int)c2); //20013   强制转换

类型转换

由于Java是强类型语言,所有需要有些运算的时候的,需要用到类型转换。

低 -------------------------------------------------------------->高

byte, short, char -> int -> long -> float -> double

(小数的优先级高于整数)

运算中,不同类型的数据先转换为同一类型,然后进行运算。

强制类型转换 高 - - 低

int i = 128;
byte b = (byte) i;  // MAX_VALUE = 127----->MIN_VALUE = -128 强制转换  高--->低
double x = i; //自动转换  低--->高
//内存溢出
System.out.println(i);  // 128
System.out.println(b);  // -128
System.out.println(x);  // 128.0

int money = 10_0000_0000;
int year = 20;
int total1 = money*year;  //计算的时候溢出了,-1474836480
long total2 = money*year; //默认是int , 转换之前就已经出现问题了
long total3 = money*((long)year);  //先把一个数转换为long
System.out.println(total1);  // -1474836480
System.out.println(total2);  // -1474836480
System.out.println(total3);  //  20000000000

变量、常量、作用域

变量

  • 变量是什么:就是可以变化的量!

  • Java是一种强类型语言,每个变量都必须声明其类型。

  • Java变量是程序中最基层的存储单元,其要素包括变量名,变量类型和作用域。

  • 注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

  • 变量名必须是合法的标识符。

  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

变量作用域

public class Demo04 {
   

    //常量 -->修饰符,不存在先后顺序
    //final static double PI = 3.14;
    static final double PI = 3.14;

    //类变量--static
    static double monthSalary = 2500;

    //实例变量:从属于对象:如果不自行初始化,输出的就是这个类型的默认值
    //默认类型:八大基本类型:--->整形 0  ---->浮点型---->0.0   布尔型 --->false  除了基本类型其余的默认值都是null
    String name;
    String age;

    public static void main(String[] args) {
   
        //变量 :--> 局部变量,类变量,实例变量

        //局部变量:必须声明和初始化
        int i = 10;
        System.out.println(i); // -->10

        //类变量--static  可以直接输出 去掉static则会报错
        System.out.println(monthSalary);  // -->2500.0

        //实例变量输出--->变量类型  变量名字 = new demo04();
        Demo04 demo04 = new Demo04();
        System.out.println(demo04.name); // null
        System.out.println(demo04.age); // null

        //常量
        System.out.println(PI);  // 3.14
    }
}

常量

  • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
  • 所谓常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值;
final double PI = 3.14;
  • 常量名一般使用大写字符。

变量的命名规范

  • 所有变量、方法、类名:见名知意

  • 类成员变量:首字母小写和驼峰原则:monthSalary

  • 除了第一个单词外,后面的单词首字母大写

  • 局部变量:首字母小写和驼峰原则

  • 常量:大写字母和下划线 MAX_VALUE

  • 类名:首字母大写和驼峰原则:Man,GoodMan

  • 方法名:首字母小写和驼峰原则:run(),runRun()

运算符(基础运算符)

//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/b); // 0 --->a/b等于0.5,但是由于没有强转!所以会被忽略小数点后面的数
System.out.println(a/(double)b); //0.5

long e = 1212414394L;
int f = 123;
short g = 10;
byte h = 8;
System.out.println(e+f+g+h); // 1212414535  Long  -->多个参数中有一个Long类型,则为Long,没有Long则转为int类型
System.out.println(f+g+h); // 141 int  --->有double则结果为double
System.out.println(g+h); // 18  int

//关系运算符  返回结果:正确,错误,布尔值
int x = 10;
int l = 20;
int r = 21;
System.out.println(a>b);  // false
System.out.println(a<b);  // true
System.out.println(a==b);  // false
System.out.println(a!=b);  // true
System.out.println(r%x);  // 1  --->模运算  取余

自增自减运算符

//  ++ --  自增,自减 一元运算符
int a = 3;
int b = a++;  // a++ 的意思是 a = a + 1 --->执行完这行代码后,先给b赋值,再自增
// a = a + 1
System.out.println(a); // 4
// a = a + 1
int c = ++a;  // 执行完这行代码前,先自增,再给b赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5

//幂运算 2^3
double pow = Math.pow(2, 3);
System.out.println(pow); // 8.0

逻辑运算符、位运算符

//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+(a&&b)); // false 逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b: "+(a||b)); // true  逻辑或运算:两个变量有一个为真,结果才为true
System.out.println("!(a && b): "+!(a&&b)); // true 如果为真,则变为假,如果为假,则变为真

//短路运算:逻辑与运算中,如果前面一个参数为假,则不会去执行后面一个参数
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(c);  // 5
System.out.println(d);  // false

//位运算
/**
         *   A = 0011 1100
         *   B = 0000 1101
         * ------------------------
         * A&B = 0000 1100  两个都为1才为1,反之则为0
         * A|B = 0011 1101  两个中有一个为1,就可以为1(包括两个都为1),
         * A^B = 0011 0001  异或运算---->相同为0,不相同则为1
         *  ~B = 1111 0010  取反--->与B相反即可
         *
         *  面试题:2*8 = 16 ,怎么运算才能最快得出答案
         *  左移(>> /2),右移(<< *2),
         *  0000 0000 0
         *  0000 0001 1
         *  0000 0010 2
         *  0000 0011 3
         *  0000 0100 4
         *  0000 1000 8
         *  0001 0000 16
         */
System.out.println(2<<3); //16

三元运算符(拓展赋值运算符)

拓展赋值运算符:
//拓展赋值运算符
int a = 10;
int b = 20;
a+=b; // a = a+b  30
a-=b; // a = a-b  10
a*=b; // a = a*b
a/=b; // a = a/b
System.out.println(a);

//字符串连接符 + , 面试题:问两个输出的区别?
System.out.println(""+a+b); // 1020  如果在+运算符两侧出现了String,他就会对加号两侧进行连接
System.out.println(a+b+""); // 30  如果字符串在前面他就会对运算符后面进行拼接,如果字符串在后面,则运算符前面的数会运算

里面拓展了一个面试题:

三元运算符: ? :
//三元运算符 x ? y : z,如果x为真,则结果为y,否则结果为z
int score = 80;
String type = score > 60 ? "及格" : "不及格";  //及格
System.out.println(type);

用户交互Scanner

1、之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获 取用户的输入。java.util.Scanner 是Java5的新特征,我们可以通过Scanner类来获取用户的输入

2、通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()hasNextLine()判断是否还有输入的数据。

1、 next()和hasNext()
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
//判断是否还有输入?
if (scanner.hasNext()){
   
    //使用next方式接收
    String str = scanner.next();//程序会等待输入内容,不输入会卡在这里
    System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉
scanner.close();
2、 nextLine()和hasNextLine()
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
if (scanner.hasNextLine()){
   
    String str = scanner.nextLine();
    System.out.<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Marlboro~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值