热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Java]Java入门笔记(二):数据类型、程序结构、数组、控制台输入

二、基本语法2.1标识符定义:给类、方法、变量等起的名字规则:可以使用字母(26个英文字母的大小写、各国的一些语言、…)、数字、下划线、美元符号;不能以数字开始(可以$开始);不能

二、基本语法

2.1 标识符



  • 定义:给类、方法、变量等起的名字



  • 规则:



    1. 可以使用字母(26个英文字母的大小写、各国的一些语言、…)、数字、下划线、美元符号;



    2. 不能以数字开始(可以$开始);



    3. 不能是Java中的关键字;





  • [▲Java]类名必须以大写字母开始



  • 标识符的规范



    1. 见名知义

    2. 有多个单词时,使用驼峰命名法(userName)

    3. 常量名全部大写

    4. 包名小写

    5. 类名首字母大写

    6. 工程名首字母大写




Unicode

前128个是ASCII表



  • '0':48

  • 'A'-Z':65-90

  • 'a'-'z':97-122


Java关键字


2.2 常量



  • 定义:一个值保持不变的量(容器)。



  • 格式:public static final 类型名 常量名 = 常量值;

    public static final double PAI = 3.14;//常量的值不可被修改


  • 注意:



    1. 必须在方法外定义常量

    2. 常量的值不可被修改;




2.3 变量

注意:



  1. 必须给局部变量赋值;


2.3.1 变量定义的语法规范


变量定义、初始化



  • 变量定义格式:

    [变量修饰符] 变量数据类型 变量名1, 变量名2 [=变量初值];


  • 变量修饰符

    [public/protected/private] [static] [final] [transient] [volatile]


  • 成员变量的类型可以是Java中的任意类型,包括简单数据类型、类、接口、数组。



  • 变量的初始化





































数据类型初值
整型(byte/short/int/long)0
float0.0f
double0.0d
booleanfalse
char/u0000
对象类型null

变量分类、作用域



  • 变量的作用域



    • 决定了变量可以使用的范围:



      • 全局变量(Global variables):变量可以在整个类中被访问。

      • 局部变量(Local variables):变量只能定义在其的代码段中被访问。使用前必须初始化



    • 作用域规则:

      在一个代码段中定义的变量,只能在该代码段或者该代码段的子代码段中可见。





  • 变量分类



    • 全局变量:

      • 实例成员变量:单个对象独有,修改对象自己的实例变量,不影响别的对象

      • 类成员变量(类变量、静态变量):被所有对象共享,使用static修饰。



    • 成员变量默认的初始值。

    • 局部变量:定义在方法体中的变量,使用之前必须初始化。加载到栈空间

    • 类属性:具有相应的 set / get 方法。加载到堆空间



  • 注意:

    变量名首字母一般小写




* 成员变量 和 局部变量 的区别

成员变量和局部变量的区别


2.4 运算符


2.4.1 算术运算符

+, -, *, /, %

2.4.2 关系运算符

==, ===, !=, >, >=, <, <=


  • 做运算之后一定是boolean型值。



  • >, >=, <, <=比较数值,

    ==, !=除了比较数值之外,还可以比较相同类型

    flag = "我" >= "你";//×错误
    flaf = "我" == "你";//√正确


  • 其中,使用 == 做比较时,



    • 基本类型:比较数据值



    • 引用类型:比较地址值,所以比较字符串内容是否相同应该调用 equals() 方法。

      str1.equals(str2) ,相同返回 True ,否则 False






2.4.3 逻辑运算符

&&, ||, !, &, |


  • &&,||进行“短路”运算

    即,有假必假,有真必真。



  • &, |则不进行,两边都要进行运算。




2.4.4 赋值和复合运算符(优先级垫底)

+=, -=, *=, /=, %=;
>>=, <<=, >>>=

2.4.5 位运算符

>> /2, <<*2, >>>

位移运算(没有 <<<)。



  • 右移运算符 >>

    用最高位的 10 补。



  • 无符号右移运算符 >>>




2.5 运算符优先级

算术运算符>关系运算符>逻辑运算符>赋值运算符


三、Java数据类型

3.1 基本数据类型(8大)

*基本数据类型的数据储存在栈内存中。


3.1.1 逻辑类型 boolean



  • boolean:1字节

    • 也叫布尔型。

    • 有两个值:true和false。




3.1.2 整型 byte / short / int / long



  • byte:1字节,-27~(27-1),-128 ~ 127,256个值。

  • short:2字节,-215~(215-1),

  • int:4字节,-2147483648~2147483647

  • long:8字节


3.1.3 浮点类型 double / float



  • float:4字节

    • 结尾加上F/f;



  • double:8字节

    • 结尾加上D/d;




3.1.4 字符类型 char



  • char:2字节

    • 单个字符




*注意



  1. String类型不是基本数据类型;

  2. 字符串与什么相加都是字符串;


3.2 复合数据类型/引用数据类型



  • 引用类型的变量,只可能存储两类值:null地址值(含变量的类型)



  • 数组储存在堆内存中。




3.3 类型转换


数据类型的优先级(低→高)

byte,short,char→ int → long → float → double


3.3.1 自动/自动转换



  • 低优先级转换为高优先级



  • char隐式转换:字符在Unicode的编号。



  • boolean型数据和其他基本数据类型之间不能相互转换。



  • 复合赋值操作:

    short s = 10;
    s = s + 1;//错误,s+1是int型
    short s2 = 10;
    s2 += 1;//正确,使用复合赋值操作时,编译器会把得到的s2+1转换成short型


  • byte, short, char这三者不管怎么组合运算得到的都是int型数据。




3.3.2 强制/显式转换



  • 高优先级转换为低优先级



  • 方式:(目标类型)变量名



double dou2 = 3.14;
int myInt = (int)dou2;//myInt==3


  • int和long转换char:会根据整型值对应的Unicode表中的字符。



  • 注意:



    1. 取值范围由大变小可能会造成数据溢出,如:

    int x = 130;
    byte b = (byte)x;//b=-128


    1. 转换前的数据类型与转换后的数据类型兼容。

      String str = "1";
      int x = (int)str;//错误





四、程序的三种基本结构

4.1 顺序结构


4.2 分支结构



  • 单分支、双分支、多分支。



  • 语句:



    • if-else语句(可以嵌套)

      if (expression) {
      expression;
      } else if (expression) {
      expression;
      } else {
      expression;
      }


      • 即使只有一个语句,也尽量不要省略大括号{}



    • switch-case语句

      switch (expression) {
      case 常量1:{
      statements
      break;
      }
      case 常量2: {
      statements
      break;
      }
      ...
      default: {
      statements
      break;
      }
      }


      • 常量的数据类型要和expression一致。

      • expression的值不能是浮点型,可以是字符串,字符,整型,枚举。






4.3 循环结构


for循环



  • 格式:

    for(1初始化计数;2条件测试;4再求值参数) {
    3expression;//如果有多个语句,{}不能省略
    }

    例:

    int sum = 0;
    for(int i = 0; i<=5; i++) {
    sum += i;
    }


    • for循环中的三个表达式都可以省略,但不能省略';'号。



    • ▲使用for循环可以不包含任何循环体(语句),有助于提高某些算法的效率和创建时间延迟循环。

      for(int i=0; i





while循环



  • 格式:

    while(expression1) {
    expression2;
    }


    • expression1用于判断,结果为true则执行循环体中的语句(expression2);结果为false则退出循环。




do-while循环



  • 格式:

    do {
    expression1;
    } while (expression2);


    • 循环体中的代码先执行一次再来根据expression2来判断。

    • 注意最后的分号';'




*注意



  • 如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是根据循环体的执行情况确定的,一般用while语句或者do-while语句

    (循环次数已经确定→for;否则其他)



  • 当循环体至少执行一次时,用do-while语句;反之,如果循环体可能一次也不执行时,用 while语句。




五、数组

5.1 一维数组


5.1.1 定义



  • type arrayName[]; 或者 type[] arrayName;

int[] intArray;
int intArray[];


  • 可以定义复合类型(即类类型)的数组。

People[] pArray;

5.1.2 初始化


静态初始化



  • 可在定义时初始化:

int intArray[] = {1,2,3,4};
int[] arr = {1,2,3,4};//不能给数字

动态初始化



  • 用new运算符为数组分配空间

  • 格式:type[] arrayName = new type[num];

int[] arr1 = new int[2];//{0,0}
arr1[0] = 123;
arr2[1] = 456;


  • 注意:



    1. 对于动态初始化一维数组,如果只new没有赋值,数组中的所有元素会自动获得默认初始值。如下:































      数组类型元素默认初始值
      整型数组0
      浮点型数组0.0
      布尔型数组false
      字符型数组/u0000
      类类型数组null





5.1.3 数组的下标与长度

引用方式:arrayName[index]



  • 数组下标可以是整型常数或者表达式



  • 如果下标(index)越界,则会报异常。



  • 获取数组的元素个数(长度):数组变量名.length

    intArray.length



5.1.4 遍历数组



  1. for语句

int[] arr={1,2,3,4}
for(int i=0;i<5;i++) {
System.out.println(arr[i]);
}


  1. foreach

for(int num:arr) {
//arr数组中的元素,会依次赋给num
System.out.println("num="+num);
}

*注意



  • 数组越界会报错


六、输入

6.1 控制台输入

import java.util.*;
Scanner sc = new Scanner(System.in);


  1. 先构造一个 Scanner

    Scanner sc = new Scanner(System.in);


  2. 使用 next 等方法

    String name = in.nextLine(System.in);


    • next方法:字符串;

    • nextLine方法:读取一行字符串;

    • nextInt方法:读取整型;

    • nextDouble方法:读取浮点数;

    • ......





推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 那你就是学的c语言,跟我学c语言
    本文目录一览:1、如何学习C语言?2、新手如何 ... [详细]
  • JAVA流程控制结构在java中有三种流程控制结构:顺序结构,选择结构,循环结构顺序结构:顺序结构,是指程序从 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Java各个版本新特性及Lambda表达式简介
    本文介绍了Java各个版本的新特性,包括接口的默认方法和Lambda表达式。接口的默认方法允许给接口添加非抽象的方法实现,使用default关键字。Lambda表达式提供了更简洁的语法,可以替代传统的匿名对象的方式。同时,还介绍了Lambda表达式在排序中的应用。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • switch分支结构一、程序运行流程的分类1、顺序结构:根据程序顺序依次执行。2、分支结构:根据判断决定程序的执行顺序。3、循环结构。分支结构三要素&# ... [详细]
author-avatar
龙井龙井2502908921
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有