一、标识符和关键字

  1.标识符  

    1)java中标识符用来为程序的白能量、常量、方法、类、接口和包名命名,标识符由字母、数字、下划线、美元符号组成,且第一个字符不能是数字;
    2)标志符命名规则:见名知意原则和驼峰命名法;

   2.关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(单词),关键字中所有字母都为小写

   3.Java中的名称命名规范

1)包名:多单词组成时,所有字母都小写:xxxyyyzzz

2)类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

3)变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

二、注释和标签

  1. 单行注释:// ,多行注释:/*...*/
  2. 文档注释:/**
                *文档注释(以@为前缀)
                */
  3. @author:作者名,@version:版本,@parameter:参数及其意义,@since:最早使用该方法、类的JDK版本,@return:返回值,@throws:异常类机器抛出条件

三、变量和数据类型

  1.进制数

十进制(D

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

二进制(B

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

八进制(O

0

1

2

3

4

5

6

7

10

11

12

13

14

15

16

17

十六进制(H

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

  注:八进制必须以0开头,例:0123;十六进制必须以0X开头,例:0X25

  2.各进制数转换

    1)其他类型---->十进制:各位数字分别乘以各自基数(二进制:2,八进制:8,十六进制:16)的(N-1)次方,并相加求和,其中N是数字位数(按权相加法

      例如:(1001)2=(9)10:1×23+0×22+0×21+1×20=9;(11)8=(9)10:1×81+1×80=9;(25)16=(37)10:2×161+5×160=37;

    2)十进制--->其他类型:整数部分(除基取余法↑),小数部分(乘基取余法↓),再拼接 

    3)二进制---->八进制:←整数部分.小数部分→,即整数部分向左每三位转换成二进制数,位数不够则补0;小数部分向右每三位转换成二进制数,位数不够则补0

    4)八进制---->二进制:与二进制-转八进制相反

    5)二进制----->十六进制:←整数部分.小数部分→,即整数部分向左每四位转换成二进制数,位数不够则补0;小数部分向右每四位转换成二进制数,位数不够则补0

    6)十六进制----->二进制:与二进制转十六进制相反

    7)八进制<----->十六进制:八进制<--->二进制<------>十六进制

        

  3.数据类型:

  

  3. 默认值:数值变量:0;字符变量:‘\0’;布尔变量:false;引用数据类型:null;'\n':换行;'\t':Tab键;'\r':回车

  4. 不同数据类型之间的转换(自动转换:如下图;强制转换:int a = (int)45.3)

  

注:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。如下图,底数2,0或1表示正或负

  

  5.变量:

    1)常量:程序执行过程中值不能被改变的量,通常用大写字母表示

    2)变量:程序执行过程中值能被改变的量

    3)定义变量:[访问修饰符]变量类型   变量名 [= 初始值]final 数据类型  常量名称 [=初始值]

    4)当定义的final变量属于成员变量时,必须定义时赋初始值

    5)变量的有效范围:

      ◊成员变量:类体中定义,整个类中有效

        实例变量:int x = 5;

        静态变量(类变量):有效范围内可以”跨类“,甚至达到整个程序之内。使用方法:1.本类中直接存取;2.其他类中以"类名.静态变量"调用

      ◊局部变量:方法体中定义,只在当前代码块有效({变量作用范围}),包括方法的参数。局部变量的使用高于成员变量,若同名则成员变量展示隐藏

三、运算符与表达式

  1. 算术运算符

  

  ◊算数运算符的注意问题:

   1)取余(模):余数正负与”%左边“的数保持一致。例:-1%5 = -1(商0),1%-5 = 1

   2)“+”除字符串相加功能外,还能把非字符串转换成字符串。例:System.out.println("5+5="+5+5); //打印结果是"5+5=10"

   3)++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果不同

  

  

  2.赋值运算符

  

  3. 关系运算符
  

  4. 逻辑运算符

  

  注:a&&b若a为false则不会判断条件b,a||b若a为true则不会判断条件b,

  6. 位运算符

运算符 名称 举例 运算规则 结果
& “与”、“位与” 5&4 如果两个数的二进制,相同位的数都是1,则该位结果是1,否则是0

5的二进制是  0000 0000 0000 0101,4的二进制是  0000 0000 0000 0100,则结果是 0000 0000 0000 0100  转为十进制是4

| “或”、“位或” 5 | 4 如果两个数的二进制,相同位的数有一个是1,则该位结果是1,否则是0 结果是  0000 0000 0000 0101  转为十进制是5
^ “异或、“位异或” 5 ^ 4 如果两个数的二进制,相同位的数只有一个是1,则该位结果是1,否则是0 结果是        0000 0000 0000 0001 转为十进制是1 
~ “非”、“位非” ~5 属于一元操作符,只对一个操作数进行操作,(其他按位操作符是二元操作符)。按位“非”生成与输入位相反的值,——若输入0,则输出1,若输入1,则输出0

5的二进制是  0000 0000 0000 0101,则~5是 1111 1111 1111 1010  转为十进制是 -6

>> 右移位 5>>2 按照操作符右侧指定的位数将操作符左边的操作数向右移。“有符号”右移位操作符使用“符号扩展”;若符号位正,则在高位插入0;若符号位负。则在高位插入1
5的二进制是   0000 0000 0000 0101
右移两位  0000 0000 0000 0001
<< 左移位 5<<2 按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)
5的二进制是   0000 0000 0000 0101
左移两位  0000 0000 0001 0100
>>> “无符号”右移位 5>>>2 使用“零扩展”;无论正负,都在高位插入0
5的二进制是   0000 0000 0000 0101
无符号右移两位  0000 0000 0000 0001
  负数的二进制转化,计算机计算是用的补码 -5

1、首先取出这个数的原码的二进制

2、然后再求出反码

3、最后求出补码

-5的原码是              1000 0000 0000 0101

求出反码的是            1111 1111 1111 1010

求出补码是               1111 1111 1111 1011

  注:移位操作符只可用来处理整数类型;   

  7. 三元运算符

语法形式:布尔表达式 ? 表达式1 :表达式2

四、数组:用于存储一组同一数据类型数据的容器

  1. 一维数组

    定义:数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2……}  或   数据类型[ ] 数组名 = {元素1,元素2……}

  2. 二维数组:二维数组的每一个元素是一个一维数组

    定义:数据类型[ ][ ] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];

          数据类型[ ][ ] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][ ];

       数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};

  3.数组在内存中的存储过程

    内存:栈内存、堆内存、方法区、本地方法栈(和其他语言交互)、寄存器(汇编)

    栈内存:可以用于存储变量,栈内存对存入其中的变量不会自动赋值,变量在使用完成之后会立即移出栈内存释放空间

    堆内存:用于存储对象的,堆内存对于存入其中的元素会自动的赋予初始值(byte/short/int:0,long:0L;float:0.0f,double:0.0,char:‘\u0000’,boolean:false),引用数据类型的默认值都是null,对象使用完成之后不会立即移出堆内存,而是在不定的某个时刻被回收

  4.数组应用

  1)常用方法

  •  Arrays.fill(数组名,值):将数组中每个元素赋予相同的值。
  • Arrays.asList(数组):将数组转化为集合(set,list)。

    String s[] = {"wyy", "wzz", "wxx"};
    List<String> list = new ArrayList<>(Arrays.asList(s));
    list.add("whh");
    System.out.println("ArrayList是否包含:" + list.contains("whh"));
    Set<String> set = new HashSet<>(Arrays.asList(s));
    System.out.println("集合set是否包含:" + set.contains("wyy"));
  • Arrays.toString(数组).contains(xxx):数组是否包含某个元素

  • ArrayUtils.addAll(array, array2) :连接两个数组

  • arr.join( ", "):根据分隔符拼接数组元素

  • ArrayUtils.reverse(array):反转数组

  • Arrays.equals(score1,score2):比较两个数组是否相等
  • Arrays.fill(array,value):数组填充

  • binarySearch(Object[] a,int fromIndex,int toIndex,Object key):在指定的范围内查找某一元素,在进行数组查询之前,必须对数组进行排序(可以使用 sort() 方法),如果 key 包含在数组中,则返回搜索值的索引;否则返回 -1 或“-插入点”

    public static void main(String[] args)
    {
    double[] score={99.5,100,98,97.5,100,95,85.5,100};
    Arrays.sort(score);
    int index1=Arrays.binarySearch(score,100);
    int index2=Arrays.binarySearch(score,60);
    System.out.println("查找到 100 的位置是:"+index1);
    System.out.println("查找到 60 的位置是:"+index2);
    }
  • Arrays.copyOf(dataType[] srcArray,int length):默认从源数组的第一个元素(索引值为 0)开始复制,目标数组的长度将为 length。如果 length 大于 srcArray.length,则目标数组中采用默认值填充;如果 length 小于 srcArray.length,则复制到第 length 个元素(索引值为 length-1)即止。若目标数组如果已经存在,将会被重构。

  • Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex):其中,srcArray 表示源数组;startIndex 表示开始复制的起始索引,目标数组中将包含起始索引对应的元素,若目标数组如果已经存在,将会被重构。

  • System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length):方法位于 java.lang.System 类中,srcArray 表示源数组;srcIndex 表示源数组中的起始索引;destArray 表示目标数组;destIndex 表示目标数组中的起始索引;length 表示要复制的数组长度。目标数组必须已经存在,且不会被重构,相当于替换目标数组中的部分元素。

  • array_name.clone():clone() 方法的返回值是 Object 类型,要使用强制类型转换为适当的类型。例:int[] targetArray=(int[])sourceArray.clone();目标数组如果已经存在,将会被重构。

  • Arrays.sort(数组) :
    1. 导入 java.util.Arrays 包。
    2. 使用 Armys.sort(数组名) 语法对数组进行排序,排序规则是从小到大,即升序。

  2)数组元素排序

  • 冒泡排序:在双层循环中实现,其中外层循环控制排序轮数,总循环次数为要排序数组的长度减 1。而内层循环主要用于对比相邻元素的大小,以确定是否交换位置,对比和交换次数依排序轮数而减少。

    public voidarrSort(score){  //score是要排序的数组
    System.out.println("通过冒泡排序方法对数组进行排序:");
    for(int i=0;i<score.length-1;i++)
    {
    //比较相邻两个元素,较大的数往后冒泡
    for (int j=0;j<score.length-1-i;j++)
    {
    if(score[j]>score[j+1])
    {
    double temp=score[j+1]; //把第一个元素值保存到临时变量中
    score[j+1]=score[j]; //把第二个元素值转移到第一个元素变量中
    score[j]=temp; //把临时变量(第一个元素的原值)保存到第二个元素中
    }
    System.out.print(score[j]+ " "); //对排序后的数组元素进行输出
    }
    System.out.print("【");
    for(int j=score.length-1-i;j<score.length;j++)
    {
    System.out.print(score[j]+" ");
    }
    System.out.println("】");
    }
    }
  • 选择排序:每一趟从待排序的数据元素中选出最大(或最小)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完
    int[] number={13,15,24,99,4,1};
    String end="\n";
    int index;
    for(int i=1;i<number.length;i++)
    {
    index=0;
    for(int j=1;j<=number.length-i;j++)
    {
    if(number[j]>number[index])
    {
    index=j; //查找最大值
    }
    }
    end=number[index]+" "+end; //定位已排好的数组元素
    int temp=number[number.length-i];
    number[number.length-1]=number[index];
    number[index]=temp;
    System.out.print("【");
    for(int j=0;j<number.length-i;j++)
    {
    System.out.print(number[j]+" ");
    }
    System.out.print("】"+end);
    }

五、流程控制语句(if,switch,for,while,do...while)

  

  2. 循环语句

  

  3.return 语句:用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。

  4.break 语句:有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。

  5.continue 语句:是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。

  注:continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。

  6.标签功能:跳出外层循环

标签名:循环体{      
      break 标签名;    
    }

Loop:for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(j==4){
     break Loop; //此处也可以用continue:跳过外层本次循环,执行外层下一次循环       
}
}
}

Java基础语法 第2节 Java语言基本语法的更多相关文章

  1. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  2. Java基础语法 第1节 Java语言发展和JDK安装

    一.Java发展历程 1995年5月23日,Java语言诞生: 1996年1月,第一个JDK-JDK1.0诞生: 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术: 199 ...

  3. Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  4. Java基础学习笔记二十三 Java核心语法之反射

    类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,链接,初始化三步来实现对这个类进行初始化. 加载就是指将class文件读入内存,并为之创建一个Class对象.任 ...

  5. Java基础15:深入剖析Java枚举类

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  7. Java基础知识强化99:Java 常见异常及趣味解释

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.langjava.lang软件包是java语言的核心部分,它提供了java中的基础类. java.lan ...

  8. JAVA基础知识(一)—JAVA概述

    JAVA概述 1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  9. Java高级特性 第2节 java中常用的实用类(1)

    一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...

  10. 大话java基础知识一之为什么java的主函数入口必须是public static void

    为什么java的主函数入口必须是public static void main (String[] args); 很多写javaEE好几年的程序员经常会记得java的主函数就是这么写的,但实际上为什么 ...

随机推荐

  1. Configuring Ubuntu for deep learning with Python in Ubuntu16.04

    博主最近浏览到一个网站PyImageSearch,看到里面的项目还不错,就顺手配置一下环境,试着去跑下里面的模型. 首先,需要配置好需要运行模型的环境,其实主要的步骤分为以下三步: 1. 安装Ubun ...

  2. easyui弹框后销毁当前tab弹框不显示的解决方式

    var id=$("#pageId").val(); var message = "{\"id\":" + id+ ",\&quo ...

  3. MySQL存储过程错误No data - zero rows fetched, selected, or processed

    原因:游标没有获取到任何内容! 解决方案 : 声明一个 continue handler declare continue handler for not found set V_NotFound = ...

  4. git中工作区,缓存区,本地库,远程库的简要区别

    git中工作区,缓存区,本地库,远程库的简要区别 实际上前三个名词对应到实体,都是你从远程仓库克隆下来的那个项目目录!只不过工作区就是你实际看到的目录和目录里的内容,当你修改/添加/删除了从远程仓库c ...

  5. Beta阶段冲刺---Day2

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 1.昨天已完成的工作· 题目切换的改进· 支持退格操作 2.今天计划完成的工作· 数字以扑克牌的形式给出· 答案的乘除符号与游戏中 ...

  6. JAVA 线程Join

    join方法: 当某个线程要等待另一个线程执行结束后才能继续执行时,使用join方法. public class DinnerThread { public static void main(Stri ...

  7. phpcms 操作数据库 增删改查

    数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...

  8. TEST mathjax

    这里是第一个公式 $ F = ma^2 $ \[ \text{Reinforcement Learning} \doteq \pi_* \\ \quad \updownarrow \\ \pi_* \ ...

  9. JAVA多线程Thread与Runnable

    一.Runnable Runnable为一个之包含一个run方法的接口 public class MyRunnable implements Runnable{ @Override //表示:预示重写 ...

  10. C高级第二次PTA作业

    6-7 删除字符串中数字字符 1.设计思路: (1)算法: 第一步:定义一个字符数组item,输入一个字符串赋给字符数组item.调用函数delnum, 第二步:在函数delnum中定义循环变量i=0 ...