Java 学习笔记1

1.发展历史

Java中之父:詹姆斯·高斯林。
1995年:正式推出了Java。
Java平台版本
  JavaSE:针对桌面应用程序开发。
  JavaME:针对嵌入式设备提供解决方案:针对移动端:Android。
  JavaEE:针对企业级开发提供的解决方案。

2.计算机的组成:软件和硬件

软件:由特定计算机的数据和指令的集合。
分为:系统软件和应用软件

3.常用的Dos指令

进入dos的方式:windows键+r
盘符切换 盘符号:    D:\>

进入指定单级目录:cd 目录名称

回退上一级目录:cd..

回退根目录:cd \

创建目录:md 需要创建的目录名称

创建文件:copy con 文件名称---按“回车键”---进入编辑模式---编辑文件内容,----按ctrl+z:退出编辑模式----按回车健,文件保存并且退出。

删除文件:del (删除单个文件)文件名称

删除带内容的目录:rd /s 目录名称 删除带内容的目录(循环)
               rd /s /q 目录名称 暴力删除
清屏命令:cls 清空当前目录。
ipconfg:查看ip地址 ipv4
ping 域名或者ip地址:查看自己本机是否能够联网 。

4.Jvm,Jre,,Jdk

Jvm:java虚拟机。
Jdk:Java开发工具包,包含了Jre和一些工具。
Jre:java运行环境,包含了jvm和运行时需要的一些核心类库。
JDK下载地址:oracle官网。
javac.exe:编译指令。
Java.exe:运行指令。
编译Java源文件。
class  HelloWorld(类名建议和文件的名称一致){        编写HelloWorld类
​
    //main方法:程序的入口 Jvm能够识别这个方法:固定格式
    public static void main(String[] args){
    
            //不要使用中文符号,都是英文符号
            //中间"字符串值"
            System.out.println("Hello World...") ;//固定的写法: 变化的里面的字符串内容
        
    }
}
​

5.path环境变量的配置

配置Java环境变量的理由:
     因为我们的代码都不可能放到JDK安装目录的bin里面去写,当Java文件很多的时候,一些Java文件不需要了,删除这些Java文件,可能会造成.exe被删除,jdk就会存在问题。
path环境变量的执行流程:
    1)现在指定的(当前java文件所处的目录)去找,如果存在这个java文件,进行编译,使用java指令运行即可
    2)如果当前目录中找不到java文件,就会在path环境变量去找。
配置环境变量的方式:
  1. win10/win8/win7---->此电脑----->右键,选择属性----->找到"高级系统设置"---->环境变量
      ---->系统变量---->新建
  变量名:JAVA_HOME
  变量值:Jdk的安装目录 D:\Jdk\Java\jdk1.8.0_162
  2.win10/win8/win7---->此电脑----->右键,选择属性----->找到"高级系统设置"---->环境变量
     ---->系统变量---->path环境变量:将jdk安装目录的bin目录复制进去:
    D:\develop_software\Java\jdk1.8.0_162\bin (将这个路径放在path最前面)。

6.Java中的注释、关键字、标识符

1.注释:提高代码的阅读性,针对一些代码进行解释说明
   //单行注释
   /*
    多行注释
   */
   /**
    文档注释:面向对象中使用 (开发中使用的文档注释)
    作者
    时间
   */
2.关键字;被Java语言赋予特定含义的单词(都是小写字母)
    class:标记类名 :Java中的最基本单元
    public:权限修饰符的一种:表示的公共的/公开的,访问权限足够大
    static:静态修饰符(重要的关键字---->面向对象中讲)
    void: Java定义方法(函数)的方式---->"方法"时候讲 。
3.标识符:给包,类名,接口名,变量名,方法名,常量名起名字的一个字符序列。
    包:(面试对象中讲)
        一般开发场景:多级包,目录和目录之间.隔开
                com.qf.web(代码需要分层:需要使用包去划分)
                        com
                                qf
                                    web
                                            XXX.java
                                            
    类名/接口名:遵循"大驼峰命名法"
     单个单词:单词首字母大写,其余小写 
     多个单词:每个单词首字母都大写,其余小写(使用居多)
     
    变量/方法名:遵循"小驼峰命名法"
    单个单词:字母全部小写
            insert()
            update()
            delete()
            find/search/select()
    
    多个单词:第一个单词字母小写,从第二个单词开始,每个单词首字母大写,其余小写
    
                userLogin()  用户登录功能...
                userRegister() 用户注册功能...
                
    常量:
            开发场景中:很少单个单词(字母全部大写),一般都是多个单词,单词和单词下划线隔开(字母全部大写)
            自定义常量---->"面向对象中 讲final"
            
            //网络聊天室JavaSE
            //客户端发送消息:  选择了"公聊","私聊" ,服务器端如何判断公聊和私聊
            自定义常量:
                    public static int final PUBLIC_TALK = 100 ; 公聊值
                    public static int final PRIVATE_TALK = 200 ;私聊值
        
        
        标识符的组成规则:
                1)可以是26个英文大小写字母
                2)可以数字
                3)可以$
                4)可以存在_
                
                注意事项:
                        1)标识符的定义的时候,不能以数字开头
                        2)不能是Java总的关键字
                        3)Java严格区分大小写(但是,见名知意)

7.常量

常量:程序运行过程中,其值不会发生变化的量。
  分类:
  1.字面值常量
    字符串常量:使用"",括起来的内容
            "helloworld"
    字符常量    使用''括起来的单个内容
            'a','A','0',这些字符一旦参与运算,就会寻找对应的ASCII码表的值
            'a'  ----> 97
            'A'  ----> 65
            '0'  ----> 48
    整数常量
            100,20,64,78,.
    小数常量
        3.14
    布尔常量
        true/false
    空常量
            null:针对引用数据类型来说的

2)自定义常量

    public static int final PUBLIC_TALK = 100 ; //面向对象中讲static,final
    
整数常量中包含了进制
二进制/八进制/十进制(整数默认)/十六进制

将十进制转换任意进制:
使用当前十进制数据,除基取余,直到除到商为0为止,余数反转!
将任意进制转换十进制
位权展开法:
    系数*基数的权次幂相加
    0b100--->十进制
    =1*2^2 + 0 * 2^1 + 0 *2^0
    =4
    
8421码快速转换法:将十进制快速转换成二进制/二进制---十进制
二进制
    1        1        1        1        1        1        1            1
    128        64         32        16        8        4        2            1

已知二进制,将二进制数据的每一个位上1的数据,快速将它的十进制加起来---->二进制--->十进制
0b1011001 ---->十进制
=64+0+16+8+0+0+1
=89

将X进制--->Y进制
0b1011001 --- 八进制  
(1)将0b1011001--->十进制  89
  将数据除基取余,直到商为0为止,余数反转
  89/8 = 11   1 
  11/8 = 1    3
  1/8  = 0    1
  0131
  
(2)进制的概念:八进制是在二进制基础上,从右到左,每三个比特位一组,左边不够的补0,分别计算出每三个比特位一组的十进制数据---->从左到右将数据组合起来,八进制
0b1011001
  001    011    001
  
  1         3      1

0131
有符号位的数据表示法----->计算机底层计算数据:都使用"补码"计算
一般:整数
正数/负数
正数的原码,反码,补码都一样
负数已知原码
最高符号位不变,数值位按位取反,0变1,1变0---->反码
最高符号位不变,在反码的末尾+1 ---->补码

已知负数的补码---->原码

在补码的基础上,末尾-1---->反码
最高符号位不变,数值位按位取反,0变1,1变0--->原码

8.变量

   

变量:程序运行过程中,其值一直发生变化大的量,
三要素:
    变量名
    数据类型,
    初始化值;
格式:
     数据类型 变量名 = 初始化值;
 数据类型的划分:
    
        两大类:
                基本数据类型   byte:-128~127  整数默认int类型)  后面两个开发中居多(long:使用定义时间毫秒值使用居多)
                        整数类型:
                         字节类型:byte,1个字节;
                        短整类型:short,2个字节;
                        默认类型;int,4个字节;
                        长整类型:long 8个字节;                    
                        浮点类型:开发中使用居多double
                        单精度类型:float, 4个字节;
                        双精度类型:double  8个字节;                
                        字符类型:char :占2个字节
                        布尔类型:boolean 占1个字节,不会参与运算
                
                引用数据类型
                        数组,类,接口;
  byte类型的取值范围,超出范围如何更正?                          
  范围:-128~127,超出范围报错, jvm认为这个值是int类型,所以如果byte类型接收肯定报错;
解决方案:强转类型转换

byte b = 129 ; //报错
//修改
byte b = (byte)129 ;

计算--->129的原码: 
00000000 00000000 00000000 10000001 ,原码,反码,补码相同,需要使用"补码"进行计算
10000001 截取后
补码
    最高符号位        数值位
        1            0000001 
    -                      1
    -------------------------
        1             0000000
反码    
原码       1            1111111                             
相关语法规则:
Java隐式转换(隐式类型转换)
 short ,byte,char,三者不转换,一旦参与运算,先提升int类型,long,float,double....
面试题:
        第一题:
        byte b1=10,b2=20,b;
        b=b1+b2;    short ,byte,char,三者不转换,一旦参与运算,先提升int类型,long,float,double....

                b = (byte)(b1+b2) ;  变量相加:先提升类型,然后在分别计算
        b=10+20;            常量相加:先进行相加,然后看其结果是否在范围内
Java的强转类型转换(显示转换)
    作用:将大的数据类型--->小的数据类型
    目标数据类型 变量名 = (目标数据类型)(初始化值/表达式) ;
    byte b1=10,b2=20,b;
    b = (byte)(b1+b2) ; //强转语法

9.运算符

1.算术运算符:
  基本的算术运算符:+,-,*,/,%
  扩展的算术运算符:++,--(重点)
  使用场景:
            两种场景:
                1)单独使用
                        无论在数据前还是或者数据后:都是对当前变量的值进行自增1或者自减1 
                                应用场景:循环语句中有一个控制体语句(步长语句)
                        
                2)参与运算使用
                        在数据前:
                                先将当前变量本身的值进行自增1或者自减1,然后在参与运算!
                        
                        在数据后:
                                先运算,然后变量的本身的值进行自增1或者自减1;
                                
*/
class OperatorDemo2{
    
    public static void main(String[] args){
        
        //定义两个变量
        int a = 3 ;
        int b = 4 ;
        
        //先输出a,b的值
        System.out.println("a:"+a) ;//3
        System.out.println("b:"+b) ;//4
        
        System.out.println("----------------------------------") ;
        
        //场景1:单独使用
        //a)在数据前面
        //++a ;
        //--b ;
        
        //b)在数据的后面
        //a ++ ;
        //b -- ;

        //场景2:参与运算使用
        //a)在数据的前面
        //定义两个变量m,n
        //int m = ++ a; //将a变量先自增1,结果赋值m
        //int n = -- b ;//将b变量先自减1,结果赋值n
        
        
        //b)在数据的后面
        int m = a ++ ; //先将a值赋值m,m就是3,然后a进行自增1,变成4
        int n = b -- ;//先将b的值赋值n,n就是4,然后将b的值进行自减1,变成3
        System.out.println("m:"+m) ;
        System.out.println("n:"+n) ;
        System.out.println("a:"+a) ; 
        System.out.println("b:"+b) ; 
        
    }
}
2.赋值运算符:
  无论表达式是简单还是复杂,结果为true/false
  <,>,<=,>=,==,!= 
              
        注意事项:
            =不能写成==,反之,==不能写成=;冲突的
            
        扩展的赋值运算符:
            +=,-=,*=,/=,%=
*/
class OperatorDemo{
    
    public static void main(String[] args){
        
        //定义一个变量
        int a = 10 ;
        System.out.println("a:"+a) ;
        
        System.out.println("----------------------------") ;
        
        //OperatorDemo.java:23: 错误: 需要';'
        //int m == 100 ;//=写成"==":==比较运算符:比较两个数据是否相等(基本数据类型中,除去boolean类型)
        //System.out.println("m:"+m) ;
    }
}
    +=,-=,*=,/=,%=    
        使用+=举例:
                int a = 100 ; 
                a += 200 ; //将符号左边的数据和右边的数据相加,然后在将结果赋值左边的变量a
                
                    类似于:a = a + 200 ;            
    面试题:看程序,分析代码

            short s = 1 ;
            1)s = s + 1 ;
            2)s += 1 ; 
            
            问:哪一句会编译失败,为什么?如何解决?
            
            s = s+1 ; //Java中隐式类型提升:byte,shor,char三者之间不转换,参与运算时优先提升int(考点),long,float,double;

                =右边是2:int类型 
                
                解决:强制类型转换
                s = (short)(s+1) ;
                
                
                
                2)s += 1 ; 扩展的赋值运算符的有特点:隐藏了强转类型转换
                
                    结果等价于: s = (short)(s+1) ;
                    
                    +=,-=,*=,/=,%=
                        特点:隐藏了强转类型转换
*/

class OperatorDemo2{
    
    public static void main(String[] args){
        
        
        //定义一个变量
        int a = 10 ;
        a += 20 ;//类似于:a = a + 20 ;
        System.out.println("a的值是:"+a) ;
        
        System.out.println("-----------------------------") ;
        
        //面试题
        short s = 1 ;
        //s = s + 1 ; 不兼容的类型: 从int转换到short可能会有损失  (默认类型提升:隐式转换)
        //强制类型转换
        //s  = (short)(s+1) ;
        
        
        s += 1 ; //扩展的赋值运算符
        System.out.println("s:"+s) ;
        
    }
}
3.逻辑运算符:
  基本的逻辑:
        逻辑单与&,逻辑单或|,逻辑异或^,逻辑非!
  扩展的逻辑(开发中经常使用这两个)
         逻辑双与&&,逻辑双或||
4.位运算符:
  基本位运算符:位与&,位或|,位异或^,~反码(按位取反,1变0,0变1)
            重点:位异或^:一个数据被另一个位异或两次,数据是它本身!
  移位符号
    左移:<<,
    右移:>>,
    无符号右移:>>>。
例题:1.
int a = 4;
int b = (a++)+(++a)+(a*10);     (a++):将a的值先赋值:这个()整体
b?

*/

class OperatorTest{
    
    public static void main(String[] args){
        
        //定义了三个变量
        
        int a = 10;
        int b = 10;
        int c = 10;
        
        a = b++;        //a=10,b=11,c = 10;
        c = --a;        //a=9,b=11,c=9
        b = ++a;         //a=10,b=10,  c=9
        a = c--;        //a=9,b=10,c=8
        //a,b,c的结果是什么
        
        System.out.println("a:"+a+",b:"+b+",c:"+c) ;
        
        
        System.out.println("-----------------------------------------") ;
        
        
        //定义两个变量x,y
        int x = 4;  //x=4
        
        //    ++或者--参与运算时,如果在数据的后面,先运算,在去自增或者自减;
        // 如果在数据的前面:先自增或者自减1,然后参与运算
        
                //()=4: x自己本身从4自增--->5
                //= 4 + 6+    (6*10)
        int y = (x++)+(++x)+(x*10); //70
        
        //():运算过程,优先级的是一个整体
        System.out.println("y的值是:"+y) ;
        
        
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值