JAVA基础语法

Java基础语法

第一章:基础常识

常用的DOS命令

1567907407728

JAVA语言概述

  1. 语言特性

    由C和C++继承了许多成分,变量声明、操作符、参数传递和控制流程等完全相同。

    纯粹的面向对象

    舍弃了指针(以引用取代)、运算符重载、多重继承等

    增加了垃圾回收、泛型编程、类型安全的枚举、不定长参数和自动装/拆箱

    易学

    分布式

    健壮:丢弃指针,自动回收(免去了程序员忘记回收的问题)

    开源社区成熟

    解释型

    原生多线程

    1567908311630

  2. JAVA技术平台

    1567908127218
    SE:俗称核心JAVA

    JAVA学习流程

    Java是一个统称 包含javase 与Javaee(还有一个几乎没人用的javame) 是Sun公司,也就是现在的Oracle(把Sun给收购了)公司的一门面向对象的开源语言。
    javase 是java的一部分,也是基础的基础,主要是用来做桌面程序的,就像我们平时下载用的那些软件,也就是楼上说的那些客户端程序。但是用Java做软件的话,前途不明朗。
    jsp 是一种动态的页面,运行于服务器(tomcat、 jboss等),里面可以嵌套有html 或javase、Javascript的代码。
    至于javaweb那就大了,它包含了以上所有的东西,并且还有一些框架(例如 spring struts hibernate ibatis 。。。。)关于开发javaweb的框架大约有几百种之多(当然平常你掌握几种就可以了,其他的框架,用到了,现学就可以了)。
    要想学好Javaweb,Javase这个基础的基础必须要打好。尤其是Javase里面集合,io流,网络。。。等这几大块是重点的重点。
    至于学习顺序 Javase --》jsp --》javaweb。
    看到jsp的时候,可以写一些页面的东西,算是基本的web程序吧。

  3. JAVA核心机制

    1567908347296

  4. 垃圾回收(GC)

    1567908441592
    C++手动回收的优点:能够在内存不使用时快速回收,准确高效

    缺点:容易失误,出现bug

    JAVA使用系统级线程自动检测回收,优点:自动,不会出现bug

    缺点:回收不及时(在硬件水平较高的现在,可以忍受:宁可回收不及时,但是一定要回收

  5. 题外话:Windows x86是32位系统,x64是64位系统

    狭义的x86架构,指只支持32位的intel/AMD/VIA的CPU,并向下兼容16位(实模式);

    狭义的x64架构,指的是支持32位和64位的intel/AMD CPU,指令集与x86兼容,并向下兼容16位(实模式),目前绝大多数民用CPU和服务器CPU都是这样的;

    狭义的ia64架构,指的是安腾系列的CPU,虽然指令集也是64位的,但不兼容32位,intel独有的,这种CPU比较少见,基本不生产了,近似于淘汰的状态;

    广义的x86架构,泛指支持x86和x64架构intel、amd的CPU,但不包含ia64(安腾)。

    目前市面上能看到的E5没有安腾架构的(安腾是独立发布的),绝大多数E5都支持x64

  6. 正规的开发工作中,不同的任务对JAVA版本的要求不一样,同时进行多个任务时版本不同会出问题:使用压缩版jdk,根据情况解压不同版本使用

    1567909123674
    换开发版本时,在环境变量中改JAVA_HOME即可(将其改为对应版本的文件夹)所以要用压缩版

  7. JDK与JRE

    1567909344788

  8. 编译过程

    1567909443871
    .java->.class->.exe

  9. 注意代码规范和可读性!!

  10. Java语言的一些要点

    • Main方法的固定书写格式:

      public static void main(String[]args){...}

    • 严格区分大小写

    • 语句以;结束

  11. 常见问题及解决办法

    1567909753882
    1567909836101
    声明为public的主类必须与文件名一致

  12. 注释

    • 注释类型

      1567909961888
      1567910064308
      @author:写作者

      @version:写版本

第二章:JAVA基本语法

JAVA基础

  1. 保留字

    1567910972518
    尽量不要在编程中使用保留字

  2. 标识符

    • 标识符要求

      1567911137606
      数字不可以开头

    • 命名规范(很重要)

      1567911439354
      总的来说可以分为四类:

      1. 包名所有字母小写常
        2.常量名所有字母大写,单词间下划线连接
        3.类名、接口名使用大驼峰命名法
        4.变量名、方法名使用小驼峰命名法
  3. 变量

    • 保存在内存中

    • JAVA中的每个变量都必须先声明后使用

    • 变量在一对{}中有效

    • 数据类型

      1567912879317
      1567912913552
      声明long型常量需要后加'l'或'L',float型后加'f'或'F'

      1567912998582

    • Boolean类型:只能使用true或false,不能用0或者非0来定义

    • 引用类型,初始化时都可以初始化为null

    • 字符串值不可变

      1567913231499
      这里的s0和s1、s2都引用了同一个字符串同样的字符串只会储存一遍(注意如s2这样的也是一样的)

开发环境(Eclipse)

  1. Workspace:利用工作空间维护不同项目
  2. System.out.printLn()一般用于日志的输出

数据类型

  1. 数据类型转换

    1567913751137
    要点:1. 计算时向上转换

    ? 2.byteshortchar均转换为int

    ? 3.任何基本类型与字符串连接,均转为字符串

    运算符

  2. 自增自减

1567913926216
自增自减运算符区分

符号在前:先运算再取值

在后:先取值再运算

  1. 取模
  • 模数为负时,负号可忽略;但被模数为负则不可忽略,应正常运算
  1. char类型与string类型的区分

单引号引起来的是字符(char),双引号引起来的是字符串(string)

1567914404023
第一个,char在+运算符中转换为了int,做了数学运算

第二个因为第一个是string,在+运算符中做了向上的数据类型转换,转换为了string,做了字符串拼接

  1. 拓展赋值运算符

1567914543986
除了加减,乘除、取模其实都有拓展赋值运算符的!

  1. 1567914816869
    这是个之前没有注意过的点,对变量进行运算时要考虑到其类型的变化,否则会报错(可能是JAVA的特性?)

所以,自增的时候用自增运算符比用加法语句更好

  1. 逻辑运算符

1567915049966
1567915138507

  • 异或:相同是为false,不相同时为true

  • 1567915394731
    JAVA中判断条件只能是单向的

  • 逻辑与(&)和短路与(&&)的区别:

    1567915453869
    之前在C++中常用的都是短路运算符

    在不需要逻辑运算两边都参与运算的时候(也就是绝大多数时候),尽量使用短路运算符&&和||

  1. 位运算符

    用的比较少其实

    有符号的右移时看首尾,是0补0,是1补1

    无符号均补0

    1567915790933
    解释:

    1567915823985

  2. 三目运算符

    (条件表达式)?表达式1:表达式2;

    如果条件表达式为true,则执行表达式1,否则执行表达式2

  3. 运算符的优先级

    1567915945055

数组

  1. 一位数组的声明方式:

    int a[];或者int[] a;

  2. 初始化:

    1. 动态初始化
    • int[] arr=new int[3];

    • arr[i]=x;i=0,1,2

       2. 静态初始化
      
    • int a[]=new int[]{3,9,8};

    • int[] a={3,9,8};
      注:对于int[] a和int a[]这两种方式,上面的初始化方法都是可以的

  3. ? 数组初始化后,每个数组都有一个length属性指明它的长度(和C++不同,可以直接调用属性获得长度)

  4. 使用动态初始化时,数组的元素默认值是0,对象的默认类型为null

  5. 多维数组

    相比C++,有了原生支持的多维数组

    1567924508880
    可以只定义n-1维的大小,留下一个未定义的维度

  6. 特殊写法:

    int[] x,y[];这里的x是一维数组,而y是二维的(有点反直觉2333)

  7. 总结:一维数组和二维数组的各种写法

    1. 一维数组:

      1. int[]x
    2. int x[]

    3. 二维数组:

      1. int[][][] []y

      2. int[]y[]

      3. int y[] []

        反正就是要凑够两个括号,这两个括号怎么搁都是可以的

  1. 使用包的必要性
    • 解决重名问题
    • 便于管理
  2. package中用.表示包的层次(包的概念等同于文件夹的概念,可以有多级)
  3. 可以Import具体的包下的对象
  4. 1567928006428
原文地址:https://www.cnblogs.com/jiading/p/11705818.html