Java学习笔记(一):Java基础

简介: 开始学java了

@[toc]
  
  
  

常用Dos命令

打开控制台:Win + R 输入cmd

  

1.盘符切换   想切换的盘: 如: D:

在这里插入图片描述
可以看出:大小写都可以,但必须要加冒号:
  
  

2.查看当前目录下的所有文件  dir

在这里插入图片描述
  
  

3.切换目录(目录包含盘符,即既能切换盘符,也能切换具体目录)  cd(change directory)
  • 用cd /d切换盘符: cd /d 盘符:

在这里插入图片描述
  

  • 用cd切换目录:

                 cd加目录名:切换目录在这里插入图片描述
  
                  跨盘符切换目录
在这里插入图片描述

  

  • 用 cd.. 返回上一级目录

在这里插入图片描述
  
  

4.清理屏幕  cls(clear screen)

原本是这样的:
在这里插入图片描述
cls过后变成了这样:
在这里插入图片描述
  
  

5.退出终端  exit

  
  

6.查看电脑的ip  ipconfig

在这里插入图片描述
  
  

7.打开应用
  calc 计算器
  mspaint 画图工具
  notepad 记事本

在这里插入图片描述

  
  

8.ping 命令

              ping www.baidu.com

在这里插入图片描述
  
  

9.文件操作
  md 目录名 创建一个文件夹
  rd 目录名 删除一个文件夹
  cd> 文件名 创建一个文件
  del 文件名 删除文件

                 md创建文件夹
在这里插入图片描述
  
                 cd>创建文件在这里插入图片描述
  
                 del删除文件
在这里插入图片描述
  
                 rd删除文件夹
在这里插入图片描述
  
  
  

注释

Java中的注释有三种:
    1.单行注释
    2.多行注释
    3.文档注释
//单行注释: 只能注释一行文字    格式://
//多行注释:可以注释一段文字     格式:
                                    /*
                                    注释
                                     */
                                    
//文档注释:JavaDoc                格式:
                                     /**
                                      *
                                      */                                          
/***
     *      ┌─┐       ┌─┐ + +
     *   ┌──┘ ┴───────┘ ┴──┐++
     *   │                 │
     *   │       ───       │++ + + +
     *   ███████───███████ │+
     *   │                 │+
     *   │       ─┴─       │
     *   │                 │
     *   └───┐         ┌───┘
     *       │         │
     *       │         │   + +
     *       │         │
     *       │         └──────────────┐
     *       │                        │
     *       │                        ├─┐
     *       │                        ┌─┘
     *       │                        │
     *       └─┐  ┐  ┌───────┬──┐  ┌──┘  + + + +
     *         │ ─┤ ─┤       │ ─┤ ─┤
     *         └──┴──┘       └──┴──┘  + + + +
     *                神兽保佑
     *               代码无BUG!
     */

  
文档注释怎么用:

    /**
     * sex:1 表明是男性
     * sex:0 表明是女性
     */
    int sex;

这是我在类中定义的属性👆

当我调用该属性,把鼠标光标移动到上面时
在这里插入图片描述
就会出现我们的文档注释

  
  
  
  

标识符

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

标识符注意点

  • 所有的标识符都应该以字母 (A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z), 美元符($)、或者下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary、#abc
  • 虽然可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很low!!!

在这里插入图片描述

  
  
  

数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
弱类型语言:变量不用定义就能直接使用(Python)

  

Java的数据类型分为两大类
    基本数据类型
    引用类型

  

①基本数据类型(primitive type)

  八大基本数据类型:byte short int long float double char boolean
  

  • 数值类型

  
  
  整数类型

类型 范围
byte:占1个字节 范围:-128~127
short:占2个字节 范围:-32768~32767
int:占4个字节 范围:-2147483648~2147483647
long:占8个字节 范围:-9223372036854775808~9223372036854775807

  
  
     浮点类型

类型
float:占4个字节
double:占8个字节

  
  
     字符类型

类型
char:占2个字节

  

  • boolean类型

占一位,其值只有true和false两个
  
  

//八大基本数据类型  byte short int long float double char boolean

        //整数    记住4字口诀:百 万 亿 够
        byte a = 127;   //百以内用它
        short b = 32767;    //万以内用它
        int c = 2147483647;     //亿以内用它  (最常用)
        long d = 9223372036854775807L;      //够用了昂   注意:long类型要在数字后面加个L

        //浮点数 (小数)
        float e = 20.1F;    //float类型要在数字后面加个F
        double f = 3.141592653589793238462643;

        //字符
        char g = 'G';   //char类型里只能写一个字母或一个中文,不能写多个。(注意:用''单引号)
        
            //字符串,String不是关键字,是类。不是八大基本数据类型之一 !!!
            //String h = "谢谢你,因为有你,温暖了四季";    
            //String 不属于八大基本类型,属于`引用`类型  (注意:String后用""双引号)

        //布尔值:是非 (只有这两个值)
        boolean i = true;
        //boolean j = false;

在这里插入图片描述
  
  

②引用数据类型 (reference type)

  • 接口
  • 数组

(除了八大基本类型都是引用类型)
  

  

  

数据类型扩展

  
整数扩展

//整数拓展:   进制问题    二进制0b    八进制0    十进制     十六进制0x

        int i1 = 0b10;   //二进制10的十进制值是1*2^1+0*2^0 = 2(1乘2的1次方+0乘2的0次方=2)
        int i2 = 010;    //八进制10的十进制值是1*8^1+0*8^0 = 8(1乘8的1次方+0乘8的0次方=8)
        int i3 = 10;
        int i4 = 0x10;   //十六进制10的十进制值是1*16^1+0*16^0 = 16(1乘16的1次方+0乘16的0次方=16)

        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

输出结果:
在这里插入图片描述
  
浮点数扩展

//浮点数拓展
        //BigDecimal    数学工具类   可以表示银行业务
        //float     问题:表现字长是有限的,离散的,舍入误差,大约 接近但不等于
        //double
        //结论:最好完全避免用浮点数进行比较

        float f = 0.1f;     //0.1
        double d = 1.0/10;  //0.1

        System.out.println(f == d);   //false

        float f1 = 23131312312312313f;
        float f2 = f1 + 1;

        System.out.println(f1 == f2);     //true

输出结果:
在这里插入图片描述

  
字符扩展

//字符拓展
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);
        System.out.println(c2);
        System.out.println((int)c2);

        //所有的字符本质还是数字
        //编码:Unicode    占2字节    最多表示65536个字符  2**16=65536

输出结果:
在这里插入图片描述
  

char c = 'a';   //ASCII码中a是97
int e = c+1;    //97+1=98
System.out.println(e);
System.out.println((char)e);    //ASCII中98代表b

输出:
在这里插入图片描述

  
转义字符

//转义字符
        // \t   制表符
        // \n   换行
        // ...还有很多

        System.out.println("Hello\tWorld");
        System.out.println("Hello\nWorld");

在这里插入图片描述
  
布尔值扩展

//布尔值扩展
        boolean flag = true;
        if (flag == true){}     //新手
        if (flag){}     //老手
        //这俩意思一样

  
  

  

什么是字节

位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。(几个01就是几位)
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示,1B(byte,字节)= 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
  • 1bit表示1位
  • 1Byte表示一个字节 1B = 8b
  • 1024B = 1KB
  • 1024KB = 1M
  • 1024M = 1G

  
  

  

类型转换

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

优先级:
低   ------------------------------------------》》》 高
byte,short,char → int → long → float → double

低:容量小,字节少,优先级低
高:容量大,字节多,优先级高

注意:浮点数优先级一定大于整数!!!

  
运算中,不同类型的数据需要先转化为同一类型,然后才能进行运算。需要有个转换过程。

  • 强制类型转换
  • 自动类型转换

格式:强制类型转换: (类型)变量名   高-->低
   自动类型转换:  低-->高

int i = 128;
byte b = (byte)i;   //int`高`优先级-->byte`低`优先级
double d = i;   //int`低`-->double`高` 不需要加任何东西

//强制类型转换: (类型)变量名   高-->低
//自动类型转换:   低-->高

System.out.println(i);
System.out.println(b);  //内存溢出
System.out.println(d);


/*
注意点:
1. 不能对布尔值转换
2. 不能把对象类型转化为不相干的类型,比如:按字节的(八大基本数据类型)不能转化为按位的(boolean)
3.在把高优先级(大容量)转换到低优先级(小容量)的时候,强制类型转换
4.转换的时候可能存在内存溢出,或者精度问题
*/

输出结果为:
在这里插入图片描述


注意点:

  1. 不能对布尔值转换
  2. 不能把对象类型转化为不相干的类型,比如:按字节的(八大基本数据类型)不能转化为按位的(boolean)
  3. 在把高优先级(大容量)转换到低优先级(小容量)的时候,用强制类型转换
  4. 转换的时候可能存在内存溢出,或者精度问题

System.out.println((int)23.7);  //23,精度丢了
System.out.println((int)-45.89f);   //-45,精度也丢了

输出:
在这里插入图片描述

//操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;    //-1474836480,计算时溢出了。int最大21亿,这都200亿了
        long total1 = money*years;  //这俩都是int,相乘直接就溢出了,转换前就出问题了,都没机会最后转long型

        //相乘时至少转换一个,就可解决溢出问题
        long total2 = (long)money*years;    //计算前转换成long,转一个
        long total3 = money*(long)years;    //计算前转换成long,转一个
        long total4 = (long)money*(long)years;   //两个都转

        System.out.println(total);
        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);
        System.out.println(total4);

在这里插入图片描述

  
  

  

变量

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

  • Java是一种强类型语言,每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
格式: 数据类型 变量名 = 值;(可以使用逗号隔开来声明多个同类型变量)
 如:int a = 1;

注意事项:

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

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

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

  
  
变量作用域

  • 类变量
  • 实例变量
  • 局部变量
类变量
static int a = 1;

实例变量
在类里面,方法外面,从属于对象;所有的数值类型,如果不初始化,默认值就是: 整数0 小数0.0
布尔值默认是:false
除了基本类型,其余的默认值都是null
String name; 默认值为null

int age;    默认值为0

局部变量
在方法内定义,它的作用域仅限于方法内部, 离开该方法内部就是无效的,再使用就会报错。
所在位置:方法内,方法形参,构造器内,构造器形参,代码块内。

  
  

变量的命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:除了第一个单词以外,后面的单词首字母大写。如:monthSalary lastName
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

  
  

  

常量

常量定义方法:
final 常量名 = 值;

注意:

  • 常量名全用大写字母!如果字母多,中间用下划线_隔开
  • static是修饰符,修饰符的写法不存在先后顺序
static final double PI = 3.14;    // static和final是修饰符,写法不分先后      
final static double PII = 3.141;

public static void main(String[] args) {
    System.out.println(PI);
    System.out.println(PII);

在这里插入图片描述

  

final double PPII = 3.1415;    // 注意:不加static无法打印  
                            // 错因:  java: 无法从静态上下文中引用非静态 变量 PPII

在这里插入图片描述
  
  

  

运算符

Java语言支持如下运算符:
在这里插入图片描述
  
  

  

基本运算符 —— 二元运算符

二元指的是:运算时至少需要两个数。
  

补充一个快捷键   Ctrl + D : 复制当前行到下一行

  

int a = 1;
int b = 2;
int c = 3;
int d = 4;

System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);  //两个数都是int型,求出的结果就不会有小数部分
System.out.println(a / (double)b);  //把其中一个数强制转换成double型,结果就会自动转换成double型
System.out.println(d % c);    //取余(模运算),结果为:1    4/3 = 1......1

在这里插入图片描述

  
  
计算结果的类型

<font
color="red">计算结果的类型总是跟操作数中优先级最高的类型保持一致;如果优先级最高的类型低于int,则结果为int类型。
byte i1 = 8;
short i2 = 10;
int i3 = 123;
long i4 = 123123123123123L;
double i5 = 3.14;

System.out.println(i1+i2+i3+i4+i5); 
//double —— 优先级最高的类型是i5(double),所以计算出的结果为double型

System.out.println(i1+i2+i3+i4);    
//long —— 优先级最高的类型是i4(long),所以计算出的结果为long型

System.out.println(i1+i2+i3);       
//int —— 优先级最高的类型是i3(int),所以计算出的结果为int型

System.out.println(i1+i2);          
//int —— 优先级最高的类型是i2(short),但short低于int,所以计算出的结果为int型

在这里插入图片描述
  
  
关系运算符返回的结果

正确,错误   通过布尔值表示 。一般跟if连用,用来判断

int n1 = 10;
int n2 = 20;


System.out.println(n1 > n2);
System.out.println(n1 < n2);
System.out.println(n1 == n2);
System.out.println(n1 != n2);

在这里插入图片描述

  
  

  

自增自减运算符 —— 一元运算符

一元:一个数就能运算。

int a = 3;
int b = a++;    //先给b赋值,再自增
//a++   a = a + 1
System.out.println(a);    //检查此时a的值是多少
//++a   a = a + 1
int c = ++a;    //先自增,再给c赋值

System.out.println(a);
System.out.println(b);
System.out.println(c);

在这里插入图片描述
  
  
初识Math类

//幂运算 2^3   2*2*2 = 8   但Java中没有^,这时就要借助工具类 Math
double pow = Math.pow(2,3);
System.out.println(pow);

在这里插入图片描述
  
  

  

逻辑运算符

  
与(and)   或(or)   非(!)

boolean a = true;
boolean b = false;

System.out.println(a && b); //逻辑与运算:两个变量都为真,结果才为true
System.out.println(a || b); //逻辑或运算:两个变量有一个为真,结果就为true
System.out.println(!(a && b));  //逻辑非运算:如果是真,则变为假;如果是假,则变为真

在这里插入图片描述
  
  
短路运算
与(&&)运算时,如果第一个值为false,则运算停止,后面不执行了

int c = 5;
boolean d = (c<4) && (c++<10);  
//c<4直接就是错的,后面(c++<10)压根就不执行;如果执行,c++就会使c变为6,但输出结果表示c还是5

System.out.println(c);
System.out.println(d);

在这里插入图片描述
  
  

  

位运算符

  

跟二进制有关
A = 0011 1100
B = 0000 1101

A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001 (异或:相同为0,不相同为1)
~B = 1111 0010 (取反)
  

面试问: 2*8 怎么运算最快?
答:

拆分成2*(2\*2\*2)
<< 左移   相当于把数字 *2
>> 右移   相当于把数字 /2

0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
......
0000 1000 8
......
0001 0000 16

把2左移3次就相当于做了三次*2,即2*(2*2*2)

System.out.println(2<<3);

在这里插入图片描述
  
  

  

三元运算符

  
x ? y : z
如果 x\==true(x为真), 则结果为 y;如果 x==false(x为假), 结果为 z

int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);

在这里插入图片描述
  
  

  

扩展赋值运算符

  
+= ,-= ,/=,*=

int a = 1;
int b = 2;
int c = 3;

a += b;   //a = a + b
System.out.println(a);
c -= b;   //c = c - b
System.out.println(c);

在这里插入图片描述
  
  

  

字符串连接符 —— +

  
加号+左右两边只要有一边出现了String字符串类型 , 就会把另一边的操作数都转换成String进行连接

a = 1;
b = 2;
System.out.println("" + a + b);     //"1"+"2" = "12"
System.out.println(a + b + "");     //"1 + 2" = "3"

在这里插入图片描述
  
要是Python这样写会直接报错!!!

a = 1
b = 2
print("" + a + b)
print(a + b + "")

在这里插入图片描述

  
  

  

包机制

  
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间,防止类名重复。
通俗来说:包是文件夹,里面的文件是类
  

创建包
在这里插入图片描述
在这里插入图片描述
  
包语句的语法格式为:

package pkg1 [ . pkg2 [ . pkg3… ]];

  

例如,新建一个Yes.java 文件,它的内容是:

package java.pro1.base;

public class Yes {
}

  
导包:
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。
使用import语句可以完成此功能。

import package1 [. package2… ].( classname |* );

当我们想用Data函数时,就需要先导包了!不导包是没法用滴
在这里插入图片描述

import java.util.Date;

  
注意!:

  • package必须放在最上面
  • import必须放在package下面
  • 不要让包里面的名字重复(导入包的类名和当前类名不要重复)

  

通配符 —— *
导入包下的所有类

import java.util.*;

  

在这里插入图片描述

相关文章
|
2月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
64 2
|
14天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
415 37
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
20 1
|
1月前
|
Oracle Java 关系型数据库
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
缓存 安全 Java
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)