java 基础学习——1 基本语法

16 篇文章 0 订阅
11 篇文章 0 订阅


大数据学习路线,从零开始学大数据(点击跳转,学习不迷路)

Java最详细教程 (点击跳转,学习不迷路)

一、【Java语言基础】

1、标识符

1、什么是标识符?
-在Java程序中以程序员命名的单词为标识符
-标识符可以标识:;类名、方法名、变量名、常量名、接口名
2、标识符的命名规则:

  • 以数字,字母,下划线_ ,和美元符号$ 组成,不能包含其他符号
  • 不能以数字开头
  • 严格区分大小写
  • 关键字不能做标识符
  • 理论上没有长度限制,但不建议太长

3、标识符的命名规范
只是一种规范,不属于语法,不遵守规范编译不会报错

最好见名知意

遵守驼峰命名方式

  SystemService
  UserService

类名,接口名: 首字母大写,后面每个单词首字母大写

变量名、方法名: 首字母小写,后面每个单词首字母大写

常量名: 全部大写

2、关键字

关键字在Java语言中全部是小写
常见的关键字有:
public
class
static
void
if
while

3、字面值

 字面值: 
  --10 、100
  --“abc”
  --'a'
  --true、false

字面值就是数据

字面值是Java源程序的组成之一。包括标识符和关键字它们都是Java源程序的组成部分

数据在计算机语言中也是有类型的:【数据类型】

  --10 、100          整数型字面值
  --3.14              浮点型字面值
  --'a'、‘人’         字符型字面值          
  --“abc”             字符串型字面值
  --true、false       布尔型字面值

3、变量

什么是变量?

  • 变量本质来说是内存的一块空间,这块空间有:数据类型、名字、字面值。
  • 变量包含三部分:数据类型、名称、字面值【数据类型】

数据类型的作用?

  • 不同的数据有不同的数据类型,不同的数据类型底层会分配不同大小的空间
  • 数据类型是指导程序在运行阶段应该分配多少内存空间

变量要求:

  • 变量储存的具体的“数据”必须和变量的“数据类型”一致,当不一致时编译会报错
  • 在同一个作用域中,变量名不能重名,但变量可以重新赋值

变量的作用域:

  • 变量的作用域,描述的是变量的作用范围,在什么范围之内是可以被访问的,只要出了这个范围变量就无法访问了。
  • 变量除出了大括号就不认识了
  • 在不同的作用域中,变量名可以重名
  • 在同一个作用域中,变量名不可以重名

4、数据类型

基本数据类型(四大类八大种)

  • 第一类 :整数型 byte(1字节) 、 short(2字节) 、 int(4字节) 、long(8字节)
  • 第二类 :浮点型 float (4字节)、 double(8字节)
  • 第三类 : 布尔型 boolea(1字节)
  • 第四类 : 字符型 char (2字节)

二进制:

         数据的一种表示形式,十进制表示满十进一
         例如:十进制
              1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
               二进制 
              1   10(2)  11(3)  100(4)  101(5).......

计算机二进制有三种表示方式:
原码、反码、补码
计算机在任何情况下底层表示和储存数据的时候都采用了补码形式
正常的补码:和原码相同
负数的补码:负数的绝对值对应的二进制码所有二进制取反,再加1

子节(byte):

    1 byte = 8 bit 【1 个字节等于8个比特位】 (1个比特位等于二进制位: 0 或 1)
    1 KB   = 1024 Byte
    1 MB   = 1024 KB
    1 GB   = 1024 MB
    1 TB   = 1024 GB
     
    1 TB = 1024 * 1024 * 1024 *1024 * 8

数据类型的取值范围

  • 关于Java中的数字类型,数字都是有正负之分的,所以数字的二进制当中有一个二进制为称为“符号位”,在二进制的最左边,0 表示正数,1 表示负数
  • Byte类型最大值: 011111111

转义字符:

 \n : 换行
 \t : 制表符
 \ +字符 : 输出字符  如: ' \\ ' 输出: \

1.整数型:

整数型字面值有三种表示方式

  1. 十进制【一种缺省默认的方式】 如: 10 (10)
  2. 八进制【在编写八进制整数型字面值时以0开始】 如:010 (8)
  3. 十六进制【在编写十六进制整数型字面值时以0x开始】 如: 0x10 (16)

数据类型转换:

小容量向大容量转换,自动类型转换
大容量向小容量转换,强制类型转换,要加强制类型转换符 :      (数据类型)变量

2、浮点型

float 单精度【4个字节】
double 双精度【8个字节,精度较高】

 在Java中,所有的浮点型字面值默认当作double类型来处理
 要想该字面值当作float类型来处理,要在字面值后面添加 f / F 

5、运算符

  • 算术运算符

     +求和
     -相减
     * 乘积
     / 商 
     % 求余数
      
     ++ 自加1
     --  自减1
     注意:一个表达式中有多个运算符,运算符有优先级,不确定的用小括号,优先级提升
    
  • 关系运算符

    >  大于
    >= 大于等于
    <  小于 
    <= 小于等于
    == 等于
    != 不等于
    = 是赋值运算符 ,  == 是关系运算符
    关系运算符的运算结果一定是布尔类型 : true / false
    
  • 逻辑运算符

    & 	逻辑与 (两边都是true,结果才是true)
    |   逻辑或 (两边有一个是true,结果就是true)
    !  逻辑非 (取反,!false就是true,这是一个单目运算符)
    ^   逻辑异或 (两边的结果只要不一样,结果就是true)
    &&  短路与   如果前面的算子能判断出结果,后面的算子就不再执行
    ||  短路或  如果前面的算子能判断出结果,后面的算子就不再执行
    
    1.逻辑运算符的算子两边都要是布尔类型,而且运算的结果也应该是布尔类型
    
  • 赋值运算符

    =     等于(赋值给变量)
    +=  加等于  如: i += 2      既 i = i+2
    -=  减等于 
    *=   乘等于
    /=  除等于
    %=  取余等于
     先执行等号右边的表达式,将执行结果赋值给左边的变量
    
  • 三元运算符

     1、语法规则:
            布尔表达式  ? 表达式1 : 表达式2
     2、三元运算符的执行原理?
           当布尔表达式的结果是true的时候,表达式1作为整个表达式的执行结果
           当布尔表达式的结果是false的时候,表达式2作为整个表达式的执行结果
    

6、 控制语句

从键盘输入和向控制台输出

向控制台输出: System.out.println();
接受键盘的输入: java.until.Scanner s = new java.Scanner(System.in);  //创建键盘扫描对象
                String userInputContent = s.next();  // 以字符串的形式接收             

6.1 控制选择结构语句

  • if、if else语句

     if语句的语法结构,有四种:
     第一种:
    
  if(布尔表达式){
                        Java语句;
                        Java语句;
                        .............
               }
    第二种:
  if(布尔表达式){
                        Java语句;
                        Java语句;
                        .............
                }else{
                        Java语句;
                        Java语句;
                        .............
                }  
     第三种:
   if(布尔表达式){
                        Java语句;
                        Java语句;
                        .............
                }else if (布尔表达式){
                        Java语句;
                        Java语句;
                        .............
                }  else if (布尔表达式){
                        Java语句;
                        Java语句;
                        .............
                }  else if (布尔表达式){
                        Java语句;
                        Java语句;
                        .............
                }  
                只要有一条语句满足条件,执行完那条语句后控制语句结束

   第四种:
if(布尔表达式){
                    Java语句;
                    Java语句;
                    .............
            }else if (布尔表达式){
                    Java语句;
                    Java语句;
                    .............
            }  else if (布尔表达式){
                    Java语句;
                    Java语句;
                    .............
            }  else if (布尔表达式){
                    Java语句;
                    Java语句;
                    .............
            } else{
                    Java语句;
                    Java语句;
                    .............
            }  
                当所有if else语句没有执行,最后执行else语句
              
            注意:
            1.所有语句可以嵌套使用,只要合理嵌套就行
            2.第二种和第四种可以保证分支百分百会执行
  • switch语句

        1.属于选择结构,也是分支结构
        2.语法结构:
    
switch(intString类型的字面值或变量){
      case int 或 string类型得到字面值或变量:
           Java语句;
           ........
      case int 或 string类型得到字面值或变量:
           java 语句;
           .......
           break;
      default:
           java 语句;
           .......  
}
  3.switch语句的执行原理:
       switch后面小括号中的”数据“和case后面的”数据“进行一 一匹配,匹配成功的分支执行。
       按照自上而下的顺序依次匹配
  4.匹配成功的分支执行,当后面有break,整个switch语句终止。
  5.匹配成功的分支执行,后面没有break,直接进入下一个分支执行(不进行匹配)
     这种现象称为穿透现象【提供break,语句可以避免被穿透】
  6.所有分支都没有匹配成功,当有default语句时,会执行default分支当中的程序。
  7.case可以合并:
int i= 10;
swicth(i){
     case 1:case 2: case :10:
            System.out.print("Test!")
}

6.2 控制循环结构语句

  • . for 语句
  1. 语法结构:

for(初始化表达式;布尔表达式;更新表达式){
//是需要重复执行的代码片段【循环体:由java语句组成】
}

  1. for循环执行过程/执行原理

     初始化表达式 ,布尔表达式 , 更新表达式都不是必须的!
     初始化表达式最先执行,并在整个for循环中只执行一次
     布尔表达式的结果只能是true/ false,不能是其他值
     
     for循环执行过程:
        1.先执行初始化表达式,并且该表达式只执行一次
        2.判断布尔表达式是true还是false,
              - 布尔表达式true 
                     执行循环体
                     执行更新表达式
                     判断布尔表达式是true还是false
                           -  布尔表达式true 
                                    执行循环体
                                    执行更新表达式
                                    判断布尔表达式是true还是false
                                    ..................
                                          -布尔表达式false
                                                 循环结束
              - 布尔表达式false
                     循环结束
    
//例题   --输出1到10
   for (i = 1 ; i < = 10 ; i++)
       System.out.print(i);

// 死循环
   for(;;)
    System.out.print("死循环");
    
// 输出九九乘法表
for( int i = 1; i<10;i++){
    for(int j = 1; j < =i; j++){
       System.out.print(j + "*" + i + "=" + i*j +" ");
      }
       System.out.println()
}
//输出结果:
			1*1=1 
			1*2=2 2*2=4 
			1*3=3 2*3=6 3*3=9 
			1*4=4 2*4=8 3*4=12 4*4=16 
			1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
			1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
			1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
			1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
			1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
  • while 语句

     1. while 循环的语法结构:
                  while(布尔表达式  True){
                         循环体;
                       }
     2. while循环的执行原理:
              先判断布尔表达式的结果:
                    * true 
                        -执行循环体
                          *  判断布尔表达式的结果:
                                 *true
                                     -执行循环体           
                                         *  判断布尔表达式的结果:
                                                   ...................
                                               *false 
                                                  循环结束。
     3.  while循环的循环次数:
                0 ~ N 次
                注意:while循环的循环体可能执行次数为0次
    
  • do while语句

       1. do .....while 循环的语法结构:                 
                do {
                     循环体;
                }  while (布尔表达式);
               
       2. do.....while 循环的执行原理:
                 
       3. do.....while循环的执行次数:
                   循环体代码片段执行的次数是 : 1~N次【至少一次】
       4. do.....while循环的注意事项:
                      循环语句最终有一个分号 
    

6.1 改变控制顺序语句

  • break
  • continue
    在这里插入图片描述

7.方法

(1).方法的定义

1. 语法结构:
             【修饰符列表】返回值类型 方法名(形式参数列表){
                       方法体;
                    }
2. 对上述语法结构进行解释说明:
2.1 关于修饰符列表
        *  可选项,不是必须的
        * 目前统一写成 public static 
        * 方法的修饰符中有static关键字的话,怎么调用这个方法?
               -  类名.方法名(实际参数列表);
2.2 返回值类型
     * 什么是返回值?
              一个方法是可以完成某个特定的功能,这个功能结束之后大多数
              要返回最终的执行结果,执行结果可能是一个具体存在的数据。
              而这个具体存在的数据就是返回值。
              
     * 返回值类型都可以是哪些数据类型呢?
            Java任意一种类型都可以,包括基本数据类型和所有的引用数据类型
            
     * 也可能这个方法执行后不返回任何数据,Java中规定,当一个方法执行
       结束之后不返回任何数据的话,返回值的类型必须编写:void关键字    
         
     * 返回值是 “ void”的时候,在方法体中不能编写“  return  值 ;” 这样
       的语句,但可以编写“ return ;” 语句。
     
     *返回值不是void的时候
          1.  要求方法必须百分百的执行“return”值;这样的语句来完成值的返回。
              没有这个语句会报错
          2. 一个方法有返回值的时候,当我们调用这个方法,方法返回了一个
              值,对于调用者来说,这个返回值可以选择接收,也可以选择不接收,
              但大部分情况都是选择接收。
   
     * 只要带有return 关键字的语句,这个语句所在的方法结束       
2.3 方法名:
     * 只要是合法的标识符就行
     * 方法名最好见名知意
     * 方法名最好是动词
     * 方法名首字母小写,后面每个单词首字母大写
     * 
2.4 形式参数列表:简称形参
     * 形参是局部变量,int a ; double b ; float  c ; String s ;......      
     * 形参的个数可以是: 0~N个
     * 多个形参之间用“逗号” 隔开
     * 形参中起决定性作用的是形参的数据类型,形参的名字是就是局部变量的名字。
     * 方法在调用的时候,给这个方法传递的真实数据就是实际参数,简称实参
     * 实参列表和形参列表必须满足:数量相同和类型对应相同
           例如:
                     方法定义
                     public static int sum (int a ,int b ){
                       }
                       方法调用
                       sum(“abc”,“def”);编译器报错
                       sum (10,20);  成功编译
     *
     *
2.5 方法体必须由大括号括起来,方法体当中代码有顺序,遵循自上而下的顺序依次执行。
  并且方法体y由Java语句构成,每个java语句以 “;” 结尾
  3.方法怎么调用?
          方法只定义不去调用是不会执行的, 只有在调用的时候才会执行
          语法规则: 《方法的修饰符列表当中static》
                       类名.方法名(实参列表);<只是一条Java语句 ,
                       表示调用某个类的某个方法
                       传递这样的实参>

(2). 方法的内存分配

在这里插入图片描述

在这里插入图片描述

(3). 方法的重载

在这里插入图片描述

 方法重载:
               1.  方法重载又被称为:overload
               2. 什么时候考虑方法重载呢?
                      * 功能相似的时候,尽可能让方法名相同。
                        【但是,功能不同 /  不相似  的时候,尽可能让方法名不同】
               3.  什么条件构成了方法重载?
                        * 在同一个类中
                        * 方法名相同
                        * 参数列表不同
                               -数量不同
                               -顺序不同 
                               -类型不同
               4. 方法重载和什么有关系?和什么没有关系?
                        * 方法重载和方法名+参数列表有关
                        * 方法重载和返回值类型无关
                        * 方法重载和修饰符列表无关

(3). 方法的递归

 1. 什么是递归?
       方法自身调用自身
        a(){
             a();
        }
 2.  递归是很耗费栈内存的,递归算法可以不用的时候尽量不去使用。
 3. 以下程序在执行的时候发生了一个这样的错误【不是异常,是错误error】
          java.lang.StackOverflowError
          栈内存溢出错误
          错误发生无法挽回,只有一个结果,就是JVM停止工作。
 4. 递归必须有结束条件,没有结束条件一定会发生栈内存错误。
 5. 递归有结束条件,即使条件是正确的,也可能发生栈内存溢出错误,
        因为递归太深了
  
  注意:
           递归能不使用尽量别用
           但有些情况下该功能的实现必须依靠递归方式。                      

递归原理图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海码儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值