Java笔记

本文详细介绍了Java的基础知识,包括DOS命令的使用、Java平台版本、JDK、JRE和JVM的关系、Java的跨平台特性、Java代码的编写与执行过程。此外,还讲解了关键字、标识符的命名规则、常量与变量、数据类型、运算符、键盘录入数据等方面,是Java初学者的入门指南。

一.常用Dos命令

盘符切换 
    盘符号: d:/e:/f:
dir:罗列当前目录/盘符所有的文件以及文件夹的信息
cd 进入单级目录/多级目录中
cd.. 回退上一级目录
cd\ 回退根目录
md 目录名称  创建目录(创建文件夹)
rd 目录名称 删除空目录
rd /s 目录名称 循环删除带内容的目录
rd /s /q 目录名称 不询问删除带内容的目录(暴力删除)
copy con 文件名称 ---回车--进入编辑模式--- ctrl+z(退出)---回车---创建完成
del 删除单个文件 /批量删除带指定后缀的所有文件 del *.java/*.txt
​
ping ip地址/域名 :查看自己本机是否能够通信
ipconfig :查看自己的本机ip地址信息

二、Java语言的平台版本

  1、JavaSE    针对桌面应用程序的开发
        举例:模拟 桌面版的网络聊天室
  2、JavaME    针对嵌入式设备提供的一套解决方案 
  3、JAVAEE    针对企业级开发的解决方案(我们以后的方向)
        针对Web程序开发(使用web技术:JavaEE有13种技术:
                    Servlet(前后端交互的服务器程序开发 server Applet)
                    jsp:能够写Java代码的html页面   java server Page
                    Cookie:用户在浏览网站---产生临时数据 存储在浏览器中
                    HttpSession... 存储在服务器端....
                    javamail:邮件激活技术
                    ....
                    
                    SSM:主流框架
                    微服务/分布式.. .    
        )
                    js(JavaScript:前端的内容)

三.Jdk,Jre,JVM是什么,他们的包含关系

Jdk:Java开发工具包:里面包含了jre(Java的运行环境)和以及所包含Java常用的工具
Jre:Java运行环境  我们写好的Java程序,它需要前提运行环境,使用JVM调用的程序中的main方法才能运行
        JRE里面包含了JvM,以及在运行的时候Java开发所需要的核心类库(jre目录--lib目录--rt.jar)
JVM:Java虚拟机---(假象计算机:自己的内存分配/有自己的网络...),它本质就一个多线程的(至少两条线程:垃圾回收线程/主线程main(用户线程))

JDK > Jre >Jvm

四.Java的跨平台性

Java语言特点:开源(开放源代码)
        跨平台的(跨操作系统),必须在对应的系统上安装对应版本的jvm
        Java文件,就可以实现 移植性(一处编译,到处浪)
        
        Linux: 
            jdk-8u152-linux-x64.tar.gz (tar.gz格式)
        windows
            jdk.xxxx.exe

五.利用Dos命令写Java代码

1.配置path环境变量

1.为什么配置path环境变量
想让我们的Java文件在任何目录/任何地方都能够进行编译(编译的是java文件)和运行(运行的是类)
javac   源文件.java
java    class文件的前缀(类名)
​
java文件在哪个目录中---需要在指定的目录中来进行编译和运行
2.如何配置:
第一种方式:(不建议) 
   直接将jdk安装目录的bin路径 复制到系统环境变量中path里面即可
   
第二种方式:(推荐用的)
        需要在系统变量中新建变量名:JAVA_HOME
                        变量值:D:\Java\jdk1.8.0_162
            path中:%JAVA_HOME%\bin;后面其他系统变量

2.用Dos命令写java代码

1)安装完成jdk之后 ---进入bin里面
    因为bin目录里面:有我们java文件的操作指令
        javac.exe  编译指令:将写好的java文件需要编译
        java.exe   运行指令:需要将java文件编译后---产生 类名.class (字节码文件)
2)首先在bin里面去新建一个文本文件(显示后缀)
       名称:HelloWorld.txt
3)编写内容
        class  类名(建议和文件名称一致){
                
                //固定的一个格式:能够被Jvm识别的main方法(程序的入口)
                public static void main(String[] args){
                
                    //输出一句话:helloworld
                    System.out.println("Hello World") ;
                }
        
        }
4)进入dos控制台  
  进入到到jdk安装目录的bin目录里面
cd   D:\develop_software\Java\jdk1.8.0_162\bin
5)编译HelloWorld.java文件
        javac HelloWorld.java (java源文件带后缀)---没有问题--产生类名.class
        java 运行的字节码文件的前缀
        java HelloWorld

六.关键字

关键字:被Java语言赋予特定含义的单词
      在高级记事本或者开发工具eclipse/idea中,针对关键字
有一种特殊颜色标记
    
    class:Java中最基本的单元 (定义一个类)
    public:权限修饰符(公开的/公共的:访问权限足够大)
    static:静态修饰符(面向对象中讲(共享/共用))
    void:和Java中的方法定义有个关系(方法中讲解)
    
    关键字还有很多:数据类型等等,随着不断的学习,我们的关键字是
    越累越多,每一个单词都有一种特定含义(关键字都是小写!)

七.标识符

1.定义

是一种给类名,方法名,接口名,变量名,常量等,起名字的一个字符序列)----必须"见名知意"

2.组成规则

组成规则:
        1)26个英文大小写字母
        2)$符号
        3)_下划线
        4)数字字符

3.组成标识的注意规则

        1)虽然可以有数字字符出现,但是数字不能开头
        2)Java严格区分大小写   写标识符的时候一定要"见名知意"
        3)Java中的关键字不能作为"标识符"

4.给包起名字

包(文件夹,都是字母小写)
 (package):使用(面向对象中使用)  
        一般都是多级包(公司域名反写)
            单级包
                com
                  Hello.java
                    xxx.java...
                多级包(包和包(目录)之间使用.隔开)
                    com.qf.dev
                        xx.java
                        
                            com文件夹
                                qf文件夹
                                    dev文件
                                    
                                            xx.java文件
​

5.给类起名字

        遵循的是"大驼峰命名法"(阿里的规范)
如果当前类名/接口 是一个单词:那么首字母大写,其他单词小写
            class Hello{}
            class Demo{}
如果当前类名/接口 是多个单词:那么每一个单词的首字母都大写,其余小写
            class HelloWorld{}
            class MakeNameDemo{}

6.给方法和变量起名字

遵循的"小驼峰命名法"
    如果是一个单词:
                字母全部小写
                main():jvm识别的main方法
                自定义一个方法名:
                check():检查的方法
                
                int age = 20 ; //20岁
                
    如果是多个单词:
                第一个单词全部小写,从第二个单词开始,每个单词的
                首字母都是大写
                
                定义方法名
                checkUserName():检查用户名的方法
                checkUserPassword():检查密码的方法
                
                int studentAge = 20 ;

7.给常量起名字

单个单词:字母全部大写(很少用)
            HEELLO 
​
            实际开发中,使用的都是多个单词(使用居多) 
                        每个单词字母都大写,中间下划线隔开
                举例:
            后期学习多线程:多线程里面有一些常量(线程的优先级)
            
            MIN_PRIORITY = 1  最小优先级
            NORM_PRIORITY = 5       默认优先级
            MAX_PRIORITY=10  最大优先级
            
            比如:第一阶段 将小项目:网络聊天室
                    客户端---服务器端:发送数据的时候,
                    服务器端如何得知是私聊/公聊模式呢?
                    
                    自定义常量
                            public static final int PRIVATE_TAIK = 100 ;私聊
                            public static final int PUBLIC_TAIK = 200 ;公聊
                            
    
    class helloworld{
        //可以这么写,但是不规范,在公司企业(都几乎遵循的阿里规范)
    

八.常量

1.定义

  在程序的执行过程中,其值不发生改变的量

2.分类

第一类:  字面值常量
        字符串常量
                使用双引号括起来的内容 字符串+任何数据="新的字符串" ,此时的+是字符串拼接符号
                                  任何数据+"字符串" = "新的字符串" ,此时的+是字符串拼接符号
        
        字符常量
                使用单引号括起来的单个内容  'a','b','0','A','B'
                当字符不参与运算的时候:本身就是描述的就是字符本身的值,但是如果字符参与运算的时候,字符就会寻找对应的ASCII码表的值,进行运算!
                'A'---ASCII码的值 :65 
                'a'---ASCII码的值 :97 
                '0'---ASCII码的值 :48 
            整数常量
            小数常量
            布尔常量
            空常量
第二类:自定义常量(面向对象中讲--- final关键字(状态修饰符的))

3.进制以及进制的转换

二进制/八进制/十进制/十六进制
                    
                    任意(X)进制----十进制  (位权展开法:系数乘以基数的权次幂相加的结果)
                    十进制----任意进制(X进制)(使用当前数据除基取余,直到除到商为0为止,余数反转!)
                    8421码: 快速转换法
                    更方便二进制和十进制的转换
                    1       1       1       1       1       1       1       1 二进制
                    128     64      32      16      8       4       2       1 十进制
                    十进制:100----二进制
                    0B1100100
                    
                    X进制---Y进制
                    二进制---八进制
                    方式1:
                        分步骤
                            a)二进制---十进制 (8421码)
                            b)十进制---八进制(使用当前数据除基取余,直到除到商为0为止,余数反转!)
                    方式2:使用进制的概念
                        二进制---八进制
                        在二进制基础上,从右边往左边每三个比特位一组,计算出每个二进制对应的十进制数据
                        ---从左到右,组合----八进制数据

九.变量

1.定义

在程序的执行过程中,其值发生改变的量!

2.三要素

    1)数据类型
    2)变量名:按照标识符的组成规则: 遵循 "小驼峰命名法"
    3)初始化值:如果变量使用之前都没有赋值,就"报错了"

3.格式

数据类型 变量名  = 初始化值 ;

十.Java中的数据类型

1.基本数据类型

整数类型:默认int类型  
                                byte  字节类型  占用的字节数1个字节   (-128~127:范围)
                                short  短整类型 占用的字节数 2个字节
                                int   默认类型   占用的字节数 4个字节
                                long   长整型   占用字节数 8个
                                实际开发中:整数使用最多int
                                            其次long(以后用作定义时间--记录当前系统时间毫秒值(后期学习类---日期-->毫秒值)) 
                        浮点类型:默认就是double类型   实际开发中使用最多的就是double了!  (举例:商品的价格(商城价格/市场价格)..)
                                float   单精度类型 (占4个字节)
                                double  双精度类型 (占8个字节)
                        字符类型
                                char 占两个字节数
                                    char ch = 'A' ;         
                        布尔类型  不参与运算(只是提供判断不和其他数据类型转换 )      :占1个字节
                                boolean     (true/false)
                                boolean flag = true ;

2.引用数据类型

类,数组,接口

十一.基本数据类型---默认类型提升(隐式转换)与(显式转换)强制转换

1.默认类型提升(隐式转换)

byte,short,char三者之间不转换,但是分别自己参与运算的时候
        优先提升为int(考点)---long---float---double
        boolean类型:不参与任何的运算!它只是描述 
                逻辑判断的结果(true/false)

2.显式转换(强制转换)

当我们变量相加计算的时候,如果接收的类型 范围小于计算结果的数据类型
    需要使用Java的强转类型转换-----让我们的数据进行类型匹配,防止出现(jvm提示不兼容的类型:)
            
            显示转换(强制类型转换)--将大的数据类型---转换成----小的数据类型(int---byte) 
                    不仅适用于基本类型,引用数据类型(后期研究引用类型)
            格式:
                    目标数据类型 变量名 = (目标数据类型)(结果)  byte result = (byte)(a+b)  ;
        实际开发中,尽量避免强转类型转换,可能会造成数据精度损失

十一.运算符

1.基本运算符

        算术运算符:+,-,*,/(默认取整),%(模:求余数)
        赋值运算符:=     
                举例:int a = 10 ; 将10赋值给int类型的变量a
        关系(比较)运算符<,>,<=,>=,!=,==
        逻辑运算符:
                逻辑单与&,逻辑单或|,逻辑异或^,逻辑非!
        位运算符
                基本位与&,位或|,位异或^
                <<,>>,>>>  移位符号
        三元(三目)运算符

2.扩展运算符(++,--,==(比较运算符(true/false) )

场景1:
        单独使用 
                后期的循环语句for
                for(int x = 0 ; x < 10 ; x ++){
                    
                    
                }
        
        结论:无论++或者--在数据的前面还是后面,都是对当前数据本身进行
        自增1或者自减1
            
    场景2:
        参与运算使用(笔试题中出现)
        
        参与运算:
            ++或者--如果在数据的前面,先自增或者自减,然后在参与运算!
            ++或者--如果在数据的后面,先运算,然后在自增或者自减

3.扩展的运算符(+=,-=,*=,/=,%=(有自己的特点))

int x = 200 ;
         +=举个例子:
                x+= 100 ; --- 因为类型现在一致,类似于 x = x + 100 ;
            将等号右边的数据和等号左边的变量x相加然后将结果在赋值给等号左边的变量x
            

4.逻辑运算符

        逻辑单与& (并列关系)
                特点:有false,则false        
        逻辑单或| (或的关系)
                特点: 有true,则true     
        逻辑异或^ 
                特点: 相同则为false,不同则为true
                    简单记忆:
                            男女关系问题
                            
                            男男 :false
                            女女 :false
                            男女 : true
                            女男 : true
        逻辑非! 
                特点:非true,则false;非false,则true
                偶数个非是它本身!
逻辑双与&&和逻辑单与&有什么区别?
    共同点:
            都是表示并列关系,基本特点:有false,则false
    不同点:
            具有"短路"效果
            逻辑双与&& 连接的表达式:如果左边是一个false,右边就不执行了!
        逻辑双或||和逻辑单|的区别
            基本的特点:有true,则true,表示或的关系
            不同点:
            逻辑双或||连接的左边表达式如果是true,右边不执行了,具有短路效果!
    好处:提高逻辑判断的执行效率,开发中经常使用时逻辑双与&&和逻辑双或||

5.位运算符

位运算符: 就是对当前这些数据进行计算的(补码进行计算的)
    
    基本位运算符:
            位与&:  有0则0
            位或|:    有1,则1(位异或的特点:
    一个数据被另一个数据如果位异或两次,其值是它本身!)
            位异或^: 相同则为0,不同则为1
                    一个数据被另一个数据如果位异或两次,其值是它本身!
                    例如:把a跟b的值互换
                      a = a ^ b ;
                      b = a ^ b ;此时b = a
                      a = a ^ b ;此时a = b
                        
            ~反码:  全部按位取反(0变1,1变0)
            
    其他的位运算符:移位符号
                    <<:左移
                    >>:右移
                    >>>:无符号右移
<<:左移
            将这个数据(补码)向左移动,将高位丢弃掉,右边补0
            快速应用:
                    将<<这个符号左边的数据乘以2的移动次幂
            面试题:
                    请用有效的方式快速写出 2乘以8的结果: 16
                            2 << 3      2左移3位
    
>>:右移
            将这个数据(补码)向右移动,最高位是1,左边补1;最高位是0,左边补0;
            快速使用:
                    将>>符号左边的数据除以2的移动次幂
>>>:无符号右移
                无论最高位是1还是0,那么在左边始终补0

6.三目运算符

格式:(表达式)?执行 true的结果:执行false 的结果;
    表达式:可以简单可以非常复杂
    
    流程:
            首先判断表达式是否成立,如果成立,则执行true的结果
            否则,执行false的结果;  
    举例:
            有两个变量 ,需要比较两个数据中的最大值;
                (a>b)?a:b
                比较三个数中的最大值(不推荐)
                (x >y)?((x>z)?x:z):((y>z)?y:z)

十二.键盘录入数据

在写程序的过程中,想让程序更加灵活,使用Scanner类:
    jdk提供的这个类----作用 "一个简单的文本扫描器"
    
    目前:就是录入int类型数据
    操作步骤
        1)导包 import(关键字) java.util.Scanner ; 格式必须class类上面
                    需要在我当前的代码中使用jdk提供的这个类Scanner
        2)创建一个文本扫描器对象 (键盘录入对象)
            固定格式
                    Scanner 对象名(自己起名字)  = new Scanner(System.in) ;
        3)友情提示并录入int类型数据
            System.out.println("请您输入一个数据:") ;
            
                        表示:录入的是int类型数据
          int 接收的变量名 = 对象名.nextInt() ; //nextInt() ;键盘录入Scanenr的方法
        
        4)然后 "接收的变量名 "输出出来"
列:
/比较较两个数据中的最大值,然后优化---使用键盘录入两个数据
//导包
import java.util.Scanner ; 
 //在Java中只要这些类不是java.lang包下的都需要import
class Test1{
    
    public static void main(String[] args){
        
        //创建文本扫描器对象(键盘录入对象)
        Scanner sc = new Scanner(System.in) ;
        
        //提示并录入数据
        System.out.println("请您输入第一个数据:") ;
        //录入
        int firstNum = sc.nextInt() ;
        
        System.out.println("请您输入第二个数据:") ;
        //录入
        int secondNum = sc.nextInt() ;
        
        
        //比较较两个数据中的最大值,
        //三元运算符
        int max = (firstNum>secondNum) ? firstNum : secondNum ;
        System.out.println("两个数据中的最大值是:"+max) ;
        
    }
}
​
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值