JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法

学了java,做了android应用开发,现在回想起来,真的是一路坎坷。。我在上章博客中提到了我以后的几个学习计划和目标就是把以前学的java基础和android基础在学习一遍。我相信我会有不少的收获的,大家也一样,和我一起加油努力吧。话不多说,我们来抓紧学习吧! `

一、计算机语言

  • 语言

    • 人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换
  • 计算机语言
    • 人与计算机之间进行信息交流沟通的一种特殊语言
    • 计算机语言中也有字符,符号等等
    • 常见的计算机语言如C,C++,C#,JAVA

二、人机交互

  • 软件的出现实现了人与计算机之间更好的交互。
  • 交互方式
    • 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。
    • 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。

三、常用DOS命令

  • 打开DOS控制台的方式

    • win+r—cmd–回车(这也是我最常用的一种)
    • 开始–运行—cmd—回车
    • 在桌面按住 Shift 键,然后右键选择在此处打开命令窗口
  • 常用的DOS命令
    • d: 回车 盘符切换(切换到d盘根目录)
    • dir(directory):列出当前目录下的文件以及文件夹
    • md (make directory) : 创建目录
    • rd (remove directory): 删除目录
    • cd (change directory)改变指定目录(进入指定目录)
    • cd.. : 退回到上一级目录
    • cd: 退回到根目录
    • del (delete): 删除文件(可以删除单个文件如:123.txt,也可以删除一堆后缀名一样的文件*.txt)
    • cls : (clear screen)清屏
    • exit : 退出dos命令行

四、JAVA语言

  1. JAVA是什么?

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

  2. JAVA语言的平台版本

    J2SE(Java 2 Platform Standard Edition)标准版
    J2ME(Java 2 Platform Micro Edition)小型版
    J2EE(Java 2 Platform Enterprise Edition)企业版

  3. JAVA语言特点

    简单性、面向对象、分布式处理、解释性、可靠、安全、可移植性、高性能、多线程、动态性等。
    也可以说Java是一种解释性、跨平台、通用的编程语言。

    • 跨平台性

      • 通过Java语言编写的应用程序在不同的系统平台上都可以运行。
    • 原理是什么?
      • 只要在需要运行java应用程序的操作系统上,
        先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
        由JVM来负责Java程序在该系统中的运行。

五、JAVA开发工具

  • JDK的下载与安装

  • 通过官方网站获取JDK http://www.oracle.com ( 针对不同操作系统,下载不同的JDK版本)

  • 安装
    • 傻瓜式安装,下一步即可。
    • 建议:安装路径不要有中文或者特殊符号如空格等。最好目录统一。
  • JAVA环境变量的配置
    • 这个挺简单的,就不多说了。
  • 检验JDK是否安装成功,打开DOS命令窗口
    • 输入 java 检验jdk
    • 输入javac检验java环境
    • 输入java -version查看jdk版本
  • 以上是开发Java之前要做的准备,编写Java程序可以使用很多种工具
    • notepad(微软操作系统自带,在DOS窗口中你可以试试)
    • Notepad++
    • Eclipse

六、HelloWorld

让我们来一起完成我们第一个小程序Hello World,就用notepad吧!

  • 首先定义一个类

    • class 类名
  • 在类定义后加上一对大括号
    • {}
  • 在大括号中间添加一个主(main)方法/函数
    • public static void main(String [] args){ }
  • 在主方法的大括号中间添加一行输出语句
    • System.out.println(“hello world”);

代码如下:

   class HelloWorld
{public static void main(String [] args)
{
System.out.println(“Hello World”);}
}

运行结果:

程序解析:

首先编写java源代码程序,扩展名.java
在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件(javac 源文件名.java )
编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名 (java HelloWorld)
得到结果:Hello World


七、JAVA基本语法

  • 关键字
  • 标识符
  • 注释
  • 常量、进制和进制转换
  • 变量
  • 数据类型和类型转换
  • 运算符
  • 语句

    我们来逐个学习


1.关键字

  • 关键字概述

    • 被Java语言赋予特定含义的单词
  • 关键字特点
    • 组成关键字的字母全部小写
  • 用于定义数据类型的关键字
    • class (类)
    • interface (接口)
    • byte (字节型)
    • short( 短整型)
    • int (整型)
    • long( 长整型)
    • float (单精度浮点型)
    • double ( 双精度浮点型)
    • char (字符型)
    • boolean (布尔型)
    • void (声明当前成员方法没有返回值)
  • 用于定义数据类型值的关键字
    • true (关系运算的返回类型)
    • false (关系运算的返回类型)
    • null( 空)
  • 用于定义流程控制的关键字
    • if (条件语句的引导词)
    • else ( 用在条件语句中,当条件不成立时的分支)
    • switch ( 分支语句结构的引导词)
    • case (用在switch语句之中,表示其中的一个分支)
    • default (默认,例如,用在switch语句中,表明一个默认的分支)
    • while (循环语句)
    • do (用在do-while循环结构中)
    • for (一种循环结构的引导词)
    • break (中断当前循环)
    • continue( 回到一个块的开始处)
    • return ( 从成员方法中返回数据)
  • 用于定义访问权限修饰符的关键字
    • private (一种访问控制方式:私用模式)
    • protected (一种访问控制方式:保护模式)
    • public(一种访问控制方式:共用模式)
  • 用于定义类,函数,变量修饰符的关键字
    • abstract ( 表明类或者成员方法具有抽象属性)
    • final (用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变)
    • static (表明具有静态属性)
    • synchronized(表明一段代码需要同步执行)
  • 用于定义类与类之间关系的关键字
    • extends ( 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口)
    • implements(表明一个类实现了给定的接口)
  • 用于定义建立实例及引用实例,判断实例的关键字

    • new (用来创建新实例对象)
    • this (指向当前实例对象的引用)
    • super (表明当前对象的父类型的引用或者父类型的构造方法)
    • instanceof(用来测试一个对象是否是指定类型的实例对象)
  • 用于异常处理的关键字

    • try ( 尝试一个可能抛出异常的程序块)
    • catch (用在异常处理中,用来捕捉异常)
    • finally (用于处理异常情况,用来声明一个基本肯定会被执行到的语句块)
    • throw ( 抛出一个异常)
    • throws(声明在当前定义的成员方法中所有需要抛出的异常)
  • 用于包的关键字
    • package (包)
    • import(表明要访问指定的类或包)
  • 其他修饰符关键字
    • native (用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的)
    • strictfp (用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范)
    • transient ( 声明不用序列化的成员域)
    • volatile ( 表明两个或者多个变量必须同步地发生变化)
    • assert(用来进行程序调试)

八、标识符

  • 标识符概述

    • 就是给类,接口,方法,变量等起名字时使用的字符序列
  • 组成规则
    • 英文大小写字母
    • 数字字符
    • $和_
  • 注意事项
    • 不能以数字开头
    • 不能是Java中的关键字
    • 区分大小写
  • 标识符(常见命名规则)
    • 包(其实就是文件夹,用于解决相同类名问题)

      • 单级和多级
    • 类或者接口
      • 一个单词和多个单词
    • 常量
      • 一个单词和和多个单词分别举例

九、常量

  • 常量概述

    • 在程序执行的过程中其值不可以发生改变
  • Java中常量分类
    • 字面值常量
    • 自定义常量
  • 字符串常量 用双引号括起来的内容
  • 整数常量 所有整数
  • 小数常量 所有小数
  • 字符常量 用单引号括起来的内容(‘a’,’A’,’0’)
  • 布尔常量 较为特有,只有true和false
  • 空常量 null

    Java针对整数常量提供了4种表现形式

  • 二进制

  • 八进制
  • 十进制
  • 十六进制

十、进制

进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

  • 不同进制的数据组成

    • 二进制

      • 由0,1组成。以0b开头
    • 八进制
      • 由0,1,…7组成。以0开头
    • 十进制
      • 由0,1,…9组成。整数默认是十进制的
    • 十六进制
      • 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

        我们首先用eclipse来写一个Demo,看下数值为100在每个进制的输出的值

代码如下:
public class JinZhiDemo {
public static void main(String[] args) {
System.out.println(100); //十进制
System.out.println(0b100); //二进制
System.out.println(0100); //八进制
System.out.println(0x100); //十六进制
}
}

运行结果:

为什么在100前面加上0b结果是4呢?100前面加上0结果是64呢?100前面加上0x结果是256呢?不要着急,下面我来给你揭晓答案。

  1. 其他进制到十进制

    • 二进制(100)————>十进制(4)

      • 100 = 1*2² + 0*2^1 + 0*2^1 = 4+0+0 = 4
    • 八进制(100)————>十进制(64)
      • 100 = 1*8² + 0*8^1 + 0*8^0 = 64+0+0 = 64
    • 十六进制(100)————>十进制(256)
      • 100 = 1*16² + 0*16^1 + 0*16^1=256+0+0=256

进制练习,得到下面数据的十进制值:
(1)0b10101
=1*2^4 + 1*2^2 + 1*2^0
=16 + 4 + 1
=21
(2)0123
=1*8^2 + 2*8^1 + 3*8^0
=64 + 16 + 3
=83
(3)0x3c
=3*16^1 + c*16^0
=48 + 12
=60

  1. 十进制到其他进制(方法:除基取余,只到商为0,余数反转)

    • 十进制(20)————>二进制(?)

      • 首先我们来解释一下上面的方法怎么理解:
      • 20为十进制,要转为二进制,我们一定要记住余数,因为它最后就是我们的想要的答案,首先用20/2=10余0,10/2=5余0,5/2=2余1,2/2=1余0,1/2=0余1
      • 余数反转,结果是:10100
      • 大家可以用上面二进制转十进制的方法来验证一下,1*2^4+1*^2²=20
    • 认真的看了上面的十进制到二进制,我们就可以很容易的推理出十进制到八进制、十六进制的方法了,我相信聪明的你可以做到的。

  2. 任意x进制到y进制的转换?(方法:用十进制做桥梁)
    • x进制————>十进制
    • 十进制————>y进制

十一、变量

  • 变量概述

    • 在程序执行的过程中,在某个范围内其值可以发生改变的量
    • 理解:如同数学中的未知数
  • 变量定义格式
    • 数据类型 变量名 = 初始化值;
    • 注意:格式是固定的,记住格式,以不变应万变

十二、数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间

  1. 分类:
    A:基本数据类型:4类8种
    B:引用数据类型:类,接口,数组。
  2. 基本数据类型

整数 占用字节数 表数范围
byte 1 -128~127
short 2 -32768~32767
int 4 -2的31次方~2的31次方-1
long 8 -2的63次方~2的63次方-1
浮点数 占用字节数 表数范围
float 4 -3.403E38~3.403E38
double 8 -1.798E308~1.798E308

字符 占用字节数
char 2
布尔 占用字节数
boolean 1

注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。

  • 数据类型转换

    • boolean类型不参与转换
    • 默认转换
      • 从小到大
      • byte,short,char – int – long – float – double
      • byte,short,char之间不相互转换,直接转成int类型参与运算。
    • 强制转换
      • 从大到小
      • 可能会有精度的损失,一般不建议这样使用。
      • 格式:
        目标数据类型 变量名 = (目标数据类型) (被转换的数据);

    public class ZhuanHuanDemo {
    public static void main(String[] args) {
    //**把double赋值给float,加了强制类型转换**
    double d = 12.345;
    float f = (float)d;
    System.out.println(f);
    }
    }

    结果:f=12.345

十三、运算符

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符

我们来逐个学习

  1. 算术运算符

注意:
A:+,-,*,/都是比较简单的操作
B:+的几种作用:(加法、正数、字符串连接符)
C:除法的时候要注意一个问题:
1.整数相除,只能得到整数
2.要想得到小数,可以*1.0

  • 赋值运算符

    • 符号: = , +=, -=, *=, /=, %=

      • =为基本的赋值运算符,其他的为扩展的赋值运算符
    • 练习:
      public class JinZhiDemo {
      public static void main(String[] args) {
      int a,b;
      a = b = 10;
      System.out.println(a);
      System.out.println(b);
      int c = 10;
      c += 20;
      System.out.println(c);
      }
      }

      结果:
  • 比较运算符

    注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
    注2:比较运算符“==”不能误写成“=” 。

  • 逻辑运算符

    • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3 < x<6,应该写成x>3 & x<6 。
    • “&”和“&&”的区别:
      • 单&时,左边无论真假,右边都进行运算;
      • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
      • |”和“||”的区别同理,双或时,左边为真,右边不参与运算。
    • 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
  • 位运算符
  • 位运算是直接对二进制进行运算。,下面来看看要注意的细节。

    6. 三目运算符

    • 格式

      • (关系表达式)?表达式1:表达式2;
      • 如果条件为true,运算后的结果是表达式1;
      • 如果条件为false,运算后的结果是表达式2;
    • 对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行
    • <表达式1>?<表达式2>:<表达式3>; “?”运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。
    • 可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为是不是条件成立,条件成立为结果1否则为结果2。

    有关java基础入门的概念我们就先说这么多吧,把基础学好了,对于以后开发Web和Android都是很有用的,下一章我们在继续学习吧!感谢大家的支持,谢谢!

    最后给大家分享一份JAVA宝典:http://download.csdn.net/detail/m366917/9545278

JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法相关推荐

  1. JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

    JAVA基础再回首(三十)--JAVA基础再回首完美结束,感概万千! 经过了几个月断断续续的回首java基础,终于回首完了,这一路走来体会到了枯燥.乏味.有趣,当然更多是收获,和第一遍学java基础的 ...

  2. JAVA基础再回首(十三)——BigInteger类、BigDecimal类、Date类、DateFormat类、Calendar类

    JAVA基础再回首(十三)--BigInteger类.BigDecimal类.Date类.DateFormat类.Calendar类 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://b ...

  3. Java基础再回首之设计模式系列①-----StrategyPattern 策略者模式(案列教程,附带demo)

    一.前言 自己学java学的也熟悉了.踏入工作的不归路之后,身为一个Android开发工程师,不仅要Java基础扎实,还要对其的设计模式有所掌握,最近在群听到<Head First>这本书 ...

  4. Java基础(一) —— JDK安装、第一个Java程序、Java数据类型、修饰符、运算符、循环、条件

    Java基础(一) Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年 ...

  5. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  6. Android基础再回首——四大组件之Activity、Service俩兄弟

    Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...

  7. Java工程师入职——配置环境及安装开发工具

    很多新人对于进入新公司,大部分都是从发新电脑新系统开始(你好,我是小娜,让我来帮你....),电脑上各种开发环境都是从无到有,所以接下来小编从安装java到配置环境变量到eclipse等进行一系列环境 ...

  8. 【再回首:数据库篇】Oracle 开发雷区

    [再回首:数据库篇]Oracle 开发雷区 前言 存储过程.函数及触发器的使用 综述 Oracle开发雷区 一.适用范围 二.版本合规 三.安全合规 四.数据字典合规 五.表设计合规 六.索引设计合规 ...

  9. 华清远见-重庆中心-JAVA基础阶段技术总结/知识点梳理/个人总结/关于JAVA技术的解析(看法)/面试题解析

    Java基础知识 概述 什么是java:1.是边编译边解释的面向对象的编程语言. 2.java语言是1995年发布的,发布语言公司是:Sun 3.下载安装Java时从Oracle官网下载,最好下载LT ...

最新文章

  1. asp.net 在使用Response.Redirect try{}catch{}块失效
  2. C语言指针函数MFC版Demo
  3. ubuntu 系统相关有用的配置
  4. 《代码大全》阅读笔记-18-表驱动法
  5. phpstorm破解安装
  6. Numpy的切片操作
  7. NLP技术基石:从N-gram统计语言模型到BERT预训练模型演变史概述
  8. python中的append()有什么功能_关于列表:在Python中,“。append()”和“+ = []”之间有什么区别?...
  9. Python基于Snap7与PLC建立连接并读写数据
  10. adb工具下载及配置使用
  11. 电阻触摸屏原理及电容触摸屏原理(附上原图)以及各自优缺点
  12. 智能汽车操作系统行业研究及十四五规划分析报告
  13. adb不是内部或外部命令,也不是可运行的程序
  14. weblogicT3反序列化之CVE-2017-3248CVE-2018-2628CVE-2018-3245
  15. 网站打开很卡是为什么?
  16. 手把手微信机器人部署教学
  17. buildroot设置开机自动运行程序和自动登录
  18. 小学生图解排序算法:③直接插入排序
  19. 淘金币游戏猜大小-多么痛的领悟
  20. 【SaaS架构】构建 SaaS 产品所需的技术——第一部分

热门文章

  1. 【Docker系列】docker manifest
  2. 【电源设计】05反激式开关电源
  3. 一看肠一断,好去莫回头
  4. java private修饰方法,private修饰的方法
  5. 聂文涛桑黄子技术走过的文化之路
  6. minio 单机版安装
  7. RN - iOS端后台挂起后30s重启问题处理过程与心得
  8. 【转载】国家集训队论文分类
  9. 操作系统真象还原第9章:线程
  10. 用计算机弹咱们结婚吧乐谱,儿歌计算器曲谱_计算器弹音乐 大家给点流行歌乐谱吧,谢谢大家...