java入门 订阅
《Java入门》是2010年清华大学出版社出版的图书,作者是臧萌。本书充分考虑了初学Java语言的种种困难,讲解时细致入微,抽丝剥茧,层层推进,并采用对比、比喻和类比的方式讲解,还给出了大量的流程图帮助读者理解各种概念和程序的运行过程。 展开全文
《Java入门》是2010年清华大学出版社出版的图书,作者是臧萌。本书充分考虑了初学Java语言的种种困难,讲解时细致入微,抽丝剥茧,层层推进,并采用对比、比喻和类比的方式讲解,还给出了大量的流程图帮助读者理解各种概念和程序的运行过程。
信息
ISBN
9787302217831
作    者
臧萌
定    价
69.00元
书    名
Java入门
出版时间
2010-5-1
开    本
16开
出版社
清华大学出版社
Java入门内容介绍
本书是一本与众不同的Java入门好书。作者以独特的视角,向Java初学者讲述了如何才能真正理解和掌握Java语言。另外,作者专门录制了近16小时的多媒体语音教学视频帮助读者直观地学习。这些视频和书中的源代码一起收录于本书的DVD光盘中。《Java入门》是臧萌编著的一本图书。该书适合广大想学习一门编程语言的读者、没有任何基础的Java入门读者、Java自学人员、从其他语言转向Java语言的读者、大中专院校的学生和社会培训学生。 [1] 
收起全文
精华内容
下载资源
问答
  • Java入门

    千次阅读 多人点赞 2019-04-06 18:54:50
    Java入门 Java 入门 主要内容 Java的地位 Java诞生 Java的特点 安装JDK 简单的Java应用程序 重点与难点: 重点:Java平台无关性、Java程序的结构。 难点:Java程序的开发过程。 Java之父与Java的诞生 Java是1995年6...

    Java入门

    Java 入门

    主要内容
    Java的地位
    Java诞生
    Java的特点
    安装JDK
    简单的Java应用程序

    重点与难点:
    重点:Java平台无关性、Java程序的结构。
    难点:Java程序的开发过程。

    Java之父与Java的诞生
    Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言。1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。他们的精心专研和努力促成了Java语言的诞生。

    Java的先导知识与后继技术
    学习Java语言需要读者曾系统地学习过一门面向过程的编程语言,比如C语言。读者学习过Java语言之后,可以继续学习和Java相关的一些重要内容,比如,学习和数据库设计相关的Java Database Connection(JDBC)、Web设计相关的Java Server Page(JSP)、Android手机程序设计、数据交换技术相关的eXtensible Markup Language(XML)以及网络中间件设计相关的Java Enterprise Edition(Java EE),如图1.1所示。

    在这里插入图片描述

    1.1 Java的地位

    1.1.1 网络地位
    Java的平台无关性让Java成为编写网络应用程序的佼佼者,而且Java也提供了许多以网络应用为核心的技术,使得Java特别适合于网络应用软件的设计与开发。
    1.1.2 语言地位
    是一门很好的面向对象语言,通过学习Java语言可以学习怎样使用对象来完成某些任务、掌握面向对象编程的基本思想.
    1.1.3 需求地位
    IT行业对Java人才的需求正在不断的增长,掌握Java语言及其相关技术意味着较好的就业前景和工作酬金。

    1.2 Java 的特点_1

    1.2.1 简单
    Java要比C++简单,C++中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现。

    1.2.2 面向对象
    Java是面向对象的编程语言。

    1.2.3 平台无关
    在一个计算机上编译得到的字节码文件(.class文件)可以复制到任何一个安装了Java运行环境的计算机上直接使用。字节码由Java虚拟机负责解释运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统来运行。
    1.平台与机器指令
    这里所指的平台是由操作系统(Operating System, OS)和处理器CPU所构成。
    与平台无关是指软件的运行不因操作系统、处理器的变化而无法运行或出现运行错误。
    (每个平台都会形成自己独特的机器指令,所谓平台的机器指令就是可以**被该平台直接识别、执行的一种由0,1组成的序列代码。**相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的。比如,某个平台可能用8位序列代码00001111表示加法指令,以10000001表示减法指令,而另一种平台可能用8位序列代码10101010表示加法指令,以10010011表示减法指令。)
    2.Java虚拟机与字节码
    字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如图1.3所示。
    在这里插入图片描述
    **

    1.2 Java 的特点_2

    1.2. 4 多线程
    Java的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务。

    1.2.5 动态
    Java程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布环境中动态地维护程序及类库。

    1.3 安装JDK
    1.3.1 三种平台简介
    目前Java平台主要分为下列3个版本:
    (1)Java SE(曾称为J2SE)称为Java标准版或Java 标准平台.
    (2)Java EE(曾称为J2EE)称为Java企业版或Java企业平台.
    (3)Java ME(曾称为J2ME)称为Java微型版或Java小型平台.
    无论上述哪种Java运行平台都包括了相应的Java虚拟机(Java Virtual Machine),虚拟机负责将字节码文件(包括程序使用的类库中的字节码)加载到内存,然后采用解释方式来执行字节码文件,即根据相应平台的机器指令翻译一句执行一句。

    1.3.2 安装Java SE平台
    Java SE平台是学习掌握Java语言的最佳平台,而掌握Java SE又是进一步学习Java EE和Android所必须的。
    下载JDK1.8。 本书将使用针对Window操作系统平台的JDK,因此下载的版本为jdk-8u102-windows-x64.exe。
    选择安装路径界面。为了便于今后设置环境变量,建议修改默认的安装路径为:D:\jdk1.8 。

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
    在这里插入图片描述
    1.系统环境path的设置
    JDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的\bin文件夹中.

    A.首先设置系统变量JAVA_HOME
    右键单击“我的电脑或计算机”,在弹出的快捷菜单中选择“属性”,弹出“系统特性”对话框,再单击该对话框中的“高级属性设置”,然后单击按钮“环境变量”,添加系统环境变量JAVA_HOME,让该环境变量的值是JDK目录结构的根目录,例如E:\jdk1.8,如图1.7。
    在这里插入图片描述
    B.设置系统环境path的的值
    用鼠标右键单击“计算机”/“我的电脑”,在弹出的快捷菜单中选择“属性”命令弹出“系统”对话框单击该对话框中的“高级系统设置”/“高级选项”,然后单击按钮“环境变量”弹出环境变量设置对话框,在该对话框中的“系统变量(S)”中找到path、单击按钮“编辑(I) 弹出编辑系统变量对话框,在该对话框中编辑path的值即可。这里,我们为path添加的新值就是E:\JDK1.8\bin。由于已经设置了系统变量JAVA_HOME的值是E:\JDK1.8,因此可以用%JAVA_HOME%代替E:\JDK1.8。在弹出编辑系统变量对话框中为path添加的新值是%JAVA_HOME%\bin,如图1.9。
    在这里插入图片描述
    2.系统环境classpath的设置
    一般不需要设置环境变量classpath的值。如果计算机安装过一些商业化的Java开发产品或带有Java技术的一些产品,安装这些产品后,classpath的值可能会被修改了。如果希望使用最新的Java运行环境,就重新设置 classpath的值,如图1.10。(E:\jdk1.8\jre\lib\rt.jar;.?
    Classpath值中的( .; ) 是指可以加载应用程序当前目录及其子目录中的类。
    在这里插入图片描述

    1.4 Java程序的开发步骤

    开发步骤:
    1) 编写源文件:扩展名必须是 .java。
    2) 编译Java源程序:用Java编译器(javac.exe)编译源文件,得到字节码文件。
    3) 运行Java程序:使用Java解释器(java.exe)来解释执行字节码文件。
    在这里插入图片描述

    1.5 简单的Java应用程序

    1.5.1 源文件的编写与保存
    Java应用程序的源文件是由若干个书写形式互相独立的类组成。
    例子1:
    在这里插入图片描述
    编写与保存源文件
    1 编写源文件
    使用一个文本编辑器,如Edit或记事本编写上述例子1给出的源文件。
    Java源程序中语句所涉及到的小括号及标点符号都是英文状态下输入的括号和标点符号,比如“大家好!”中的引号必须是英文状态下的引号,而字符串里面的符号不受汉字符或英文字符的限制。

    2. 保存源文件
    如果源文件中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。

    上述例子1中的源文件必须命名为Hello.java。我们将Hello.java保存到C:\chapter1文件夹中。

    1.5.2 编译
    1.编译器(javac)
    进入逻辑分区C的chapter1目录中,使用编译器javac编译源文件(如图1.11):
    图1.11 使用javac编译源文件
    C:\chapter1> javac Hello.java
    在这里插入图片描述
    1.5.3 运行
    1.应用程序的主类
    一个Java应用程序必须有一个类含有
    public static void main(String args[ ])
    方法,称这个类是应用程序的主类。

    2.解释器(java)
    使用Java虚拟机中的Java解释器(java.exe)来解释执行其字节码文件。Java应用程序总是从主类的main方法开始执行。因此,需进入主类字节码所在目录,比如C:\chapter1,然后使用Java解释器(java.exe)运行主类的字节码. 图1.14 使用java解释器运行程序
    C:\chapter1> java Hello
     图1.14  使用Java解释器运行程序

    再看一个简单的Java应用程序

    不要求读者看懂程序的细节,但读者必须知道怎样保存.
    例子2中的Java源文件(源文件里有2个类)、怎样使用编译器编译源程序、怎样使用解释器运行程序 。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.6 Java反编译

    JDK提供的反编译器是javap.exe(也有真对Java的许多商业反编译软件,例如dj-gui反编译)。如果想反编译例子1中的Hello.class,可使用javap命令:javap Hello.class ,例如:
    C:\chapter1> javap Hello.class

    如果想反编译类库中的Date类(其包名是java.util)Date.class,可使用javap命令:javap java.util.Date.class,例如:
    C:\chapter1> javap java.util.Date.class

    1.7 编程风格

    1.7.2 Kernighan风格
    Kernighan风格也称“行尾”风格,即左大括号在上一行的行尾,而右大括号独占一行,如下列代码所示意。当代码量较大时不适合使用“独行”风格,因为该风格将导致代码的左半部分出现大量的左、右大括号,导致代码清晰度下降,这时应当使用“行尾”风格
    在这里插入图片描述

    1.7 注释

    编译器忽略注释内容,注释的目的是有利于代码的维护和阅读,因此给代码增加注释是一个良好的编程习惯。
    Java支持两种格式的注释:单行注释和多行注
    单行注释使用“//”表示单行注释的开始,即该行中从“//”开始的后续内容为注释 .
    多行注释的使用“/”表示注释的开始,以“/”表示注释结束 .
    文档注释。“/**”表示注释的开始,以*/”表示注释结束

    总结

    1 Java语言是面向对象编程,编写的软件与平台无关。

    2 开发一个Java程序需经过三个步骤:编写源文件、编译源文件生成字节码、加载运行字节码。

    3 编写代码务必遵守行业的习惯风格。

    展开全文
  • Java入门学习PPT课件

    千次下载 热门讨论 2015-12-21 13:24:58
    本课件主要讲解了java的一些入门知识,比较基础,适合初学java的朋友。刚开始看书可能会觉得枯燥,不防先看看简单的课件。浅显易懂。
  • Java 入门

    千人学习 2019-08-11 20:15:01
    主要通过实战应用对 计算机基础知识,Java的介绍、应用场景、环境安装、以及如何通过记事本编写Java程序,从0到有感受java入门案例     继续深化 点击   ...   
  • Java入门123(扫描版清晰化+OCR+目录)2015版。 Java入门123(扫描版清晰化+OCR+目录)。 本人下载的2015版Java入门123扫描版清晰度不够高,所以动手搞清晰了一点,还OCR了一遍,文件大小30余MB。 Java入门123 Java...
  • java 入门面试题

    万次阅读 多人点赞 2019-04-04 14:13:55
    起因 焦虑。每次自己想跳槽的时候,内心总是担忧着那些面试题怎么解答。...收集网上各种经典的 java 面试题 做出答案,分享出去,和猿友讨论,不断进步 扩大知识图谱,扎实基础,梳理知识脉络 ...

    起因

    • 焦虑。每次自己想跳槽的时候,内心总是担忧着那些面试题怎么解答。
    • 很多问题在实际工作中并不会遇到,没有实际的解决问题经验,看过也记不住。
    • 假如我明年需要换工作,那现在把下次的面试准备工作,拆分、融入到平时的每天中,会不会取得更满意的offer?

     

    目标

    • 收集网上各种经典的 java 面试题
    • 做出答案,分享出去,和猿友讨论,不断进步
    • 扩大知识图谱,扎实基础,梳理知识脉络
    • 避免下次面试时的准备工作
    • 锻炼写文章的能力

     

    Java 面试题

    基础:

    JDK 和 JRE 的区别

    == 和 equals 的区别

    基本类型和包装类对象使用 == 和 equals进行比较的结果?

    什么是装箱?什么是拆箱?装箱和拆箱的执行过程?常见问题?

    hashCode()相同,equals() 也一定为 true吗?

    final 在 java 中的作用

    final finally finalize()区别

    finally语句块一定执行吗?

    final 与 static 的区别

    return 与 finally 的执行顺序对返回值的影响

    String对象中的replace和replaceAll的区别?

    Math.round(-1.5) 等于多少?

    String 属于基础的数据类型吗?

    java 中操作字符串都有哪些类?它们之间有什么区别?

    如何将字符串反转?

    String 类的常用方法

    普通类和抽象类有哪些区别?

    抽象类必须要有抽象方法吗?

    抽象类能使用 final 修饰吗?

    接口和抽象类有什么区别?

    Java4种访问修饰符权限的区别?

    Java中的 << << >>> 是什么?

    javap 指令

    throw 和 throws 的区别?

    try-catch-finally 中哪个部分可以省略?

    常见的异常类有哪些?

     

    IO:

    java 中 IO 流有哪些?

    BIO、NIO、AIO 有什么区别?

    什么是JAVA内部类?

    nio中的Files类常用方法

     

    集合:

    java 有哪些常用容器(集合)?

    Collection 和 Collections 有什么区别?

    List、Set、Map 之间的区别是什么?

    HashMap 和 Hashtable 有什么区别?

    使用 HashMap 还是 TreeMap?

    HashMap 的实现原理

    HashSet 的实现原理

    ArrayList 和 LinkedList 的区别

    如何实现数组和 List 之间的转换?

    ArrayList 和 Vector 的区别是什么?

    Array 和 ArrayList 有何区别?

    在 Queue 中 add() 和 offer()有什么区别?

    Queue 中 remove() 和 poll()有什么区别?

    在 Queue 中 element() 和 peek()有什么区别?

    哪些集合类是线程安全的?

    迭代器 Iterator 是什么?

    Iterator 怎么使用?有什么特点?

    Iterator 和 ListIterator 有什么区别

    怎么确保一个集合不能被修改?

     

    并发:

    并行和并发有什么区别?

    线程和进程的区别?

    守护线程是什么?

    创建线程有哪些方式?

    sleep() 和 wait() 有什么区别?

    Runnable 和 Callable 有什么区别?

    线程有哪些状态?

    notify() 和 notifyAll() 有什么区别?

    JDK1.8 创建线程池有哪几种方式?

    线程池有哪些状态?

    线程池中 submit() 和 execute()方法有什么区别?

    java 程序中怎么保证多线程的运行安全?

    多线程锁的升级原理是什么?

    什么是死锁?

    怎么防止死锁?

    ThreadLocal 是什么?有哪些使用场景?

    synchronized 底层实现原理?

    synchronized 和 volatile 的区别是什么?

    synchronized 和 Lock 有什么区别?

    synchronized 和 ReentrantLock 区别是什么?

    ReadWriteLock 如何使用?

    JDK 中 Atomic 开头的类实现原子性的原理是什么?

    介绍一下 ForkJoinPool

    LongAdder 与AtomicLong有什么区别?

     

    反射:

    什么是反射?

    动态代理是什么?应用场景?

    怎么实现动态代理?

     

    序列化:

    什么是 java 序列化?什么情况下需要序列化?

     

    克隆:

    什么场景要对象克隆?

    如何实现对象克隆?

    深拷贝和浅拷贝区别是什么?

     

    web:

    jsp 和 servlet 有什么区别?

    jsp 有哪些内置对象?作用分别是什么?

    jsp 的 4 种作用域?

    session 和 cookie 有什么区别?

    session 的工作原理?

    客户端禁止 cookie,session 还能用吗?

    http 响应码 301 和 302 代表的是什么?有什么区别?

    forward 和 redirect 的区别?

    tcp 和 udp 的区别?

    tcp 为什么要三次握手,两次不行吗?为什么?

    tcp 粘包是怎么产生的?

    OSI 的七层模型有哪些?

    get 和 post 请求有哪些区别?

    如何实现跨域?

    JSONP 实现原理?

     

    安全:

    如何避免 sql 注入?

    什么是 XSS 攻击,如何避免?

    什么是 CSRF 攻击,如何避免?

     


    设计模式:

    常用的设计模式?

    简单工厂和抽象工厂有什么区别?

     

    Spring框架:

    为什么要使用 spring 框架?

    什么是 aop?

    什么是 ioc?

    spring 有哪些主要模块?

    spring 常用的注入方式有哪些?

    spring 中的 bean 是线程安全的吗?

    spring 支持几种 bean 的作用域?

    spring 自动装配 bean 有哪些方式?

    spring 事务实现方式有哪些?

    介绍一下 spring mvc

    spring mvc 运行流程?

    spring mvc 有哪些组件?

    @RequestMapping 的作用是什么?

    @Autowired 的作用是什么?

    什么是 spring boot?为什么要用?

    spring boot 核心配置文件是什么?

    spring boot 有哪些方式可以实现热部署?

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • Java入门基础知识点总结(详细篇)

    千次阅读 多人点赞 2019-11-14 14:20:57
    Java入门基础知识点总结(详细篇)~~~~~目录1.1 图解1.1.1 Java基础知识点1.1.2 Java基础语法的相关内容1.2 关键字1.3 标识符1.3.1 标识符概念1.3.2 定义标识符的合法规则1.3.3 Java中的一些命名规范1.4 变量1.4.1 ...

    1.1 图解

    1.1.1 Java基础知识点

    在这里插入图片描述

    1.1.2 Java基础语法的相关内容

    在这里插入图片描述

    1.2 关键字

    定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
    特点:关键字中所有字母都为小写
    在这里插入图片描述在这里插入图片描述

    1.3 标识符

    1.3.1 标识符概念

    Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
    凡是自己可以起名字的地方都叫标识符。

    1.3.2 定义标识符的合法规则

    由26个英文字母大小写,0-9 ,_或 $ 组成。
    数字不可以开头。
    不可以使用关键字和保留字,但能包含关键字和保留字。
    Java中严格区分大小写,长度无限制。

    1.3.3 Java中的一些命名规范

    包名:多单词组成时所有字母都小写。
    类名、接口名:多单词组成时,所有单词的首字母大写。
    变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:
    常量名:所有字母都大写。多单词时每个单词用下划线连接:PRIVATE_CONSTANT
    例如public static final double PI=3.14; //使用final关键字修饰一个常量。

    1.4 变量

    定义格式:数据类型 变量名
    需要注意的点:
    变量的作用域:一对{ }之间有效 。
    使用前需要初始化值。

    1.4.1 变量的分类

    ①按数据类型分
    在这里插入图片描述
    ②按声明位置分
    在方法体外,类体内声明的变量称为成员变量(全局变量)。
    在方法体外,类体内声明的变量称为局部变量。

    注意:二者在初始化值方面的异同:
    相同点:都有生命周期
    不同点:局部变量(包括main函数里面的)除形参外,需显式初始化(赋初值)

    1.4.2 整数类型

    byte、short、int、long
    Java各整数类型有固定的表数范围和字段长度(任何平台都统一)。
    java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’。
    在这里插入图片描述
    记忆规则,从小到大,分别占用的存储空间是1 2 4 8字节。

    1.4.3 浮点类型

    Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
    浮点型常量有两种表示形式:
    十进制数形式:如:5.12 512.0f .512 (必须有小数点)
    科学计数法形式:如:5.12e2 512E2 100E-2
    在这里插入图片描述

    1.4.4 字符类型char

    char (占2字节)
    char类型是可以进行运算的。因为它都对应有Unicode码。
    在用于计算的时候会自动转化为int类型。
    Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符

    1.4.5 布尔类型boolean

    boolean类型数据只允许取值true和false,无null。默认初值是false
    不可以0或非 0 的整数替代false和true,这点和C语言不同。

    1.5 AScii码和Unicode码

    Ascii码是计算机发明的时候为了在计算机中表示字符,人们制定的一种编码。Ascii由一个字节中的7位bit位表示,范围是0x00-0x7F共128个字符
    扩展ASCII,后来基于ascii表扩展的,共256个字符。
    再后来为了把全世界人民所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集。Unicode 只是一个符号集,它只规定了符号的二进制代码,UNICODE使用两个字节表示一个字符。UNICODE的范围是0x0000-0xFFFF共6万多个字符,其中光是汉字就占用了四万多个。
    UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。

    1.6基本数据类型转化

    自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
    在这里插入图片描述
    ①有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
    ②byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
    ③当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。

    byte和short涉及到赋值都会转换,但是特殊运送不会

    String类

    值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。
    String类属于引用类型,可用null赋值。
    String对象创建出来就不可能被改变,每次复制都需要创建新的对象。

    强制类型转换

    ①自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符,例如(int),但可能造成精度降低或溢出,格外要注意。
    ②通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
    如: String a = “43”; int i = Integer.parseInt(a);
    boolean类型不可以转换为其它的基本数据类型。

    char、byte、short之间不相互转换,涉及到运算转换成int,转成int不会自动转回来。如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    但是这样是没有问题的,如下

    在这里插入图片描述
    在这里插入图片描述

    1.7 进制

    二进制:以0b或0B开头
    十进制:正常些就行,开头不用加东西。
    八进制:以数字0开头表示
    以数字0开头表示 以0x或0X开头表示,0-9及A-F,A-F不区分大小写。

    1.7.1原码、补码

    所有数字在计算机底层都以二进制形式存在。
    所有数字在计算机底层都以二进制形式存在。
    正数的原码、补码都相同。
    负数的补码是:除符号位不变,其余位置取反+1。

    1.7.2进制间的转换

    在这里插入图片描述

    1.8运算符

    运算符
    是一种特殊的符号,用以表示数据的运算、赋值和比较等,共以下八种。(这里只挑要注意点讲一讲)
    ①位运算符
    ②算术运算符
    ③赋值运算符
    ④比较运算符(关系运算符)
    ⑤逻辑运算符
    ⑥三元运算符

    1.8.1位运算符

    在这里插入图片描述
    在这里插入图片描述

    1.8.2算数运算符

    在这里插入图片描述
    ①+是从左到右的,例如下:
    “+”除字符串相加功能外,还能把非字符串转换成字符串.例如:

    System.out.println("5+5="+5+5); //打印结果是?
    

    5+5=55

    System.out.println(5+5+"=10"); //打印结果是?
    

    10=10

    ②i++是先用后加,++i是先加后用
    ③i++的效率比i=i+1高

    ④例题(非常重点):

    public class Test3{
    	public static void main(String[] args){
    		int i = 0;		
    			i = i++;
    			System.out.println("i =" + i);
    	}
    }
    

    结果:i=0

    分析:
    i = i + 1;
    在内存中开辟空间,记录i的初始值0,同时开辟另一个临时变量的缓存空间,将i变量的临时值记录下来,随后i进行自增运算i = i+1,此时i = 1,覆盖原空间中的0,此时右边的运算才算完成, 随后进行赋值运算,即将temp的值赋给i,i又边长了0.

    相当于:

    int temp = i; //先使用i的值
    i = i + 1;
    i = temp;
    

    ⑤关于Java 中的 i += 1 和 i = i + 1 问题

    public class test {
    	public static void main(String[] args) {
    		short s = 1;
    		s = s + 1;   //编译错误
    		s += 1;      //编译通过
    	}}
    编译
    

    错误是由于 s1+1 在运算时会自动提升表达式的类型至 int 型
    再赋值给 short 类型的 s1 时将发生强制类型转换的错误
    虽然 x+=y 和 x=x+y 两个表达式在一般情况下可以通用,但是在 Java 环境中运行时存在一些细微的差别。这差别在于, += 除了实现 + 功能外,还会根据接收变量的类型自动进行类型的强制转换。

    提问:如果x是short类型变量,x++和++x是否会进行强制类型转换:不会。

    1.8.3赋值运算符

    区分好==和=的区别。
    布尔类型不可以和其他类型进行转换

    1.8.4比较运算符

    在这里插入图片描述

    1.8.5 逻辑运算符

    在这里插入图片描述
    ①“&”和“&&”的区别:
    单&时,左边无论真假,右边都进行运算;
    双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
    “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

    ②短路与&&要关注一个问题
    如果&&右边是i++之类的带有变量的值会改变的操作,那么最好用&,否则可能会因为&&左边的条件判断为假,i++就不执行了。
    ③^是异或,相同为0,不同为1。

    1.8.6三元运算符

    在这里插入图片描述

    1.8.7运算符优先级

    在这里插入图片描述

    单目运算符(++、–)

    1.9程序流程控制语句

    1.顺序结构:程序直接从上执到下,中间没有任何判断和跳转
    2.分支结构:根据判断选择性的执行某段代码,有if…else和switch两种分支语句
    3.循环结构:根据循环条件,重复性的执行某段代码。有while、do…while、for三种循环语句。JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

    循环语句的四个组成部分
    初始化部分(init_statement)
    循环条件部分(test_exp)
    循环体部分(body_statement)
    迭代部分(alter_statement)
    if语句三种格式:

    1.  if (条件表达式) {
    	执行代码块;
         }
    
    
    2.  if (条件表达式) {
    	执行代码块;
          } else {
    	执行代码块;
          }
    
    3.  if (条件表达式1) {
    	执行代码块1} else if (条件表达式2) {
    	执行代码块2} else if (条件表达式3) {
    	执行代码块3}
           …… else {
    	执行代码块n;
           }
    

    Switch用法:

    switch(变量){
    case 常量1:
    	语句1;
    	break;
    case 常量2:
    	语句2;
    	break;
    … …
    case 常量N:
    	语句N;
    	break;
    default:
    	语句;
    	break;
     } 
    

    switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,String, 枚举;
    case子句中的值必须是常量,且所有case子句中的值应是不同的;
    default子句是可任选的,当没有匹配的case时,执行default。
    break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到后面第一个break语句或直接执行到switch结尾(这种现象称为穿透)。

    return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。

    switch和if语句的对比:
    如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用switch语句。因为效率稍高。

    其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

    1.10方法

    格式:
    修饰符 返回值类型 方法名(参数类型1 形参1,参数类型2 形参2,….){
    程序代码;
    return 返回值;

    形式参数:在方法被调用时用于接收外部传入的数据的变量。
    参数类型:就是该形式参数的数据类型。
    返回值:方法在执行完毕后返还给调用它的程序的数据。
    返回值类型:方法要返回的结果的数据类型。
    实参:调用方法时实际传给函数形式参数的数据。

    1.10.1方法重载

    在这里插入图片描述
    方法重载:
    是同一个类中的说法。先决条件是同一个类,不同类之间没有重载。
    同一个类中,方法名相同,形参列表不同,就叫做方法的重载。别的不管,只看形参列表,与返回值类型无关。
    例如下图:
    在这里插入图片描述
    在这里插入图片描述

    方法签名:方法名+返回值类型+形成列表

    1.10.2方法参数传递

    Java的实参值如何传入方法呢?
    Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

    在这里插入图片描述
    来看一个题目,str输出值不变的原因就是传入函数的只是str的副本,
    然而char[ ]定义的ch值改变的原因是传入函数的虽然是ch的副本,但是副本变量里面存储的也是地址,操作ch[0],也就是操作具体的数组存储值的时候,是通过地址定位的,直接定位到了ch指针里面存储的地址指向的实体,直接更改真实值。

    展开全文
  • Java入门经典例题(二)

    万次阅读 多人点赞 2021-01-08 19:21:41
    Java入门经典例题(二) 这期依然为大家带来Java入门经典例题。 一. 编写程序数一下 1到 任意整数 的所有整数中出现多少个数字9。 上代码 import java.util.Scanner; public class TextDemo { public static void ...

    Java入门经典例题(二)


    这期依然为大家带来Java入门经典例题。
    一. 编写程序数一下 1到 100 中所有整数中出现多少个数字9。
    上代码

    import java.util.Scanner;
    
    import java.util.Scanner;
    
    public class TextDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个1~100正整数");
            int num1 = scanner.nextInt();
            int num2 = 0;
            if (num1 < 9){
                System.out.println("没有出现过9");
            }else {
                for (int i = 1; i <= num1 ; i++){
                    if (i % 10 == 9){
                        num2 ++;
                    }
                    if (i / 10 == 9 && i % 10 != 9){
                        num2++ ;
                    }
                }
                System.out.println("9的个数为:" + num2);
            }
        }
    }
    

    运行结果如下
    当输入的数字小于9时,
    在这里插入图片描述
    当输入的数字大于9时,
    在这里插入图片描述

    二.求出0~999之间的所有“水仙花数”并输出。
    (“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=13+53+33,则153是一个“水仙花数”。)

    public class TextDemo {
        public static void main(String[] args) {
            for(int i = 100; i < 1000; i++ ){
                int a = i / 100;//求百位上的数字
                int b = i / 10 % 10;//求十位上的数字
                int c = i % 10;//求个位上的数字
                if (i == (a * a * a + b * b * b + c * c * c)){
                    System.out.println(i);
                }
            }
        }
    }
    

    在这里插入图片描述

    三.编写代码模拟三次密码输入的场景。
    最多能输入三次密码;密码正确,提示“登录成功”;密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。
    上代码

    import java.util.Scanner;
    
    public class TextDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入你设置的数字密码");
            long keyword = scanner.nextLong();
            judge(keyword);
        }
        public static void judge(long keyword) {
            System.out.println("请输入你的密码");
            Scanner scanner = new Scanner(System.in);
            long num = scanner.nextLong();
            for (int i =0; i < 2;i++){
                if (num == keyword){
                    System.out.println("登陆成功");
                    return;
                }else {
                    System.out.println("密码错误,请重新输入");
                    num = scanner.nextLong();
                }
            }
            System.out.println("错误超过三次,程序将退出");
        }
    }
    

    运行结果如下
    登录成功时,
    在这里插入图片描述

    登陆失败时,
    在这里插入图片描述

    四.写一个函数返回参数二进制中 1 的个数。
    比如: 15的二进制为0000 1111 ,其中有4 个 1。

    import java.util.Scanner;
    
    public class TextDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int num = scanner.nextInt();
            int count = 0;
            for (int i = 0;i < 32;i++){
                if (((num >> i) & 1) == 1){
                    count ++ ;
                }
            }
            System.out.println(count);
        }
    }
    

    运行结果如下
    在这里插入图片描述

    五.获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。

    import java.util.Scanner;
    
    public class TextDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个数字");
            int num = scanner.nextInt();
            for (int i = 0;i < 32 ;i += 2){
                System.out.print((num >> i) & 1);
            }
            System.out.println();
            for (int i = 1;i < 32 ;i += 2){
                System.out.print((num >> i) & 1);
            }
            System.out.println();
        }
    }
    

    运行结果如下
    在这里插入图片描述

    六.输出一个整数的每一位
    在这里,我使用了递归方法。

    import java.util.Scanner;
    
    public class TextDemo {
          public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          System.out.println("请输入一个数字");
          int num = scanner.nextInt();
          Print(num);
      }
    
      public static void Print(int num) {
          if (num >9)
              Print(num /10);
          }
          System.out.print(num % 10 + " ");
      }
    }
    

    运行结果如下
    在这里插入图片描述
    七.猜数字游戏

    import java.util.Random;
    import java.util.Scanner;;
    
    public class TestDemo {
        public static void main(String[] args) {
            Random random = new Random(); // 默认随机种子是系统时间
            Scanner sc = new Scanner(System.in);
            int toGuess = random.nextInt(100);
            // System.out.println("toGuess: " + toGuess);
            while (true) {
                System.out.println("请输入要输入的数字: (1-100)");
                int num = sc.nextInt();
                if (num < toGuess) {
                    System.out.println("小了");
                } else if (num > toGuess) {
                    System.out.println("大了");
                } else {
                    System.out.println("恭喜回答正确");
                    break;
                }
            }
            sc.close();
        }
    }
    

    运行结果如下
    在这里插入图片描述

    八. 打印X图形
    当 i == j 时会打印 ‘x’ ;当i + j == num + 1 时会打印’x’;其余情况打印“" "。

    import java.util.Scanner;
    
    public class TextDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入打印行数:");
            int num= scanner.nextInt();
            //第一层循环控制行数
            for(int i = 1;i <= num;i++){
                //第二层循环控制行
                for(int j = 1;j <= num;j++){
                    //当 i == j 时会打印 'x' ;当i + j == num + 1 时会打印'x'
                    if(j == i || j + i == num + 1) {
                        System.out.print("x");
                    }
                    else
                        System.out.print(" ");
                }
                System.out.print("\n");
            }
        }
    }
    

    运行结果如下
    在这里插入图片描述

    Java入门的经典例题差不多就结束了,下期依然回归Java入门。感谢各位铁子的浏览,我们下期见。

    展开全文
  • 零基础Java入门课程

    2020-12-06 18:54:17
    该课程由付强老师主讲,系统的、全面的、具体的讲解了java入门的知识。可以使初级的学员入门。 Java入门 Java的历史、Java的版本、Java的优势、软件行业前景 Java开发环境搭建、编写Java入门练习 虚拟机的运行机制、...
  • 第一关:Java第一课 1、相关知识回顾: (1)主程序入口:public static void main(String[] args){} (2)JAVA程序的运行流程。 2、注意点: (1)Java对大小写敏感。 (2)当通过java命令对生成的class文件进行...
  • Java入门的过程完全不需要去购买上千元甚至上万元的付费课程。老银鼎力推出的“小白Java入门”系列课程已完全开放、免费的方式呈现给各位同学。使各位同学低成本的完成java入门过程。无论你是专业内还是专业外的在校...
  • java经典入门教程pdf完整版
  • Educoder - Java入门 - 方法的使用各关卡题目总结

    万次阅读 多人点赞 2021-03-07 14:21:51
    } // 定义一个返回值为double类型的方法 /********** Begin **********/ public static double calcAvg() { double java = 92.5; double php = 83.0; double avg = (java + php) / 2; // 计算平均值 return avg; /...
  • java入门到精通全套视频,非常适合零基础小白学习,可以作为自己进入java世界的敲门砖!
  • Java7 入门经典(pdf)

    2018-03-26 11:32:08
    Java7 入门经典_霍尔顿.pdf ,学习Java语言超详细的书,内容充实细致
  • java入门编程(菜鸟教程)

    千次阅读 2021-01-26 15:00:52
    1.创建一个java程序的步骤 a打开editplus软件,选择左上角的file选项,在弹出来的菜单中选择new然后再从弹出来的菜单中选择normal text b按住ctrl+s快捷键,保存。 1选择要保存的位置 2给文件命名(以大写的字母开头...
  • JAVA入门到项目实践

    2019-02-22 11:18:38
    JAVA入门到项目实践
  • import java.util.Scanner;public class 小写字母转换为大写字母控制台{ public static void main(String[] args)  { Scanner shuru=new Scanner(System.in); char b; System.out.println("请输入任意...
  • (一)常识术语解释 软件:按特定方式存储的数据和指令的集合。 控制台consloe:用来输入命令行的地方。 SUN公司:Stanford ...JVM:JAVA Virtual MachineJava虚拟机。虚拟机是不跨平台的。 JRE:Java runtime...
  • 对于很多想学习java编程的小伙伴来说如何学习是个很大的问题,不知道 从何下手,所谓万变不离其宗,掌握好基础才是关键,根据本人学习及工作经验给大家总结了入门学习Java的路线,希望能对你们有所帮助。 1、首先要...
  • JAVA 入门教程 2

    千次阅读 2018-03-31 20:13:15
    1 Java语言基础 :循环结构和for语句的格式及其使用) A:循环结构 初始化 判断 循环体 控制条件 *循环结构for语句的格式: for(初始化表达式;条件表达式;增量表达式) { 循环体; } *执行流程: a:执行初始化...
  • Java入门

    千人学习 2019-07-25 18:46:37
    "java大数据培训学校全套教材"系列课程由750集视频构成,基本就是 1)时下流行的java培训学校主流内部教材; 2)和市面上培训学校的通行的课程体系几乎一样; 3)所以这套课程都能自己学下来,等于上了培训学校一次...
  • rosjava入门

    千次阅读 2018-12-20 20:35:03
    Rosjava是我做ros以来入门最难的,一来因为用的人少,网上相关的资料非常少,能说清楚这个东西到底是个什么东西就更少了;二来因为我对java比c++熟悉很多,总是想看看rosjava的底层。 Rosjava最广泛的应用就是机器人...
  • JAVA入门很简单pdf

    热门讨论 2013-07-19 07:13:36
    JAVA入门很简单
  • Java入门到精通 PDF格式带完整目录

    千次下载 热门讨论 2009-05-31 03:25:50
    Java入门到精通 老外的入门书深入浅出, 非常适合入门,当然这个是中文版 已亲自把网上的PDG转为PDF,并制作了 完整的目录,方便大家学习
  • JAVA入门精品课程

    万人学习 2018-12-20 11:22:37
    课程目标: 1、让初学者从小白开始,善于运用知识点,解脱学习的苦恼 2、能够学习更多的工作中使用技巧,成为编程高手
  • JAVA入门教程:(一)第一个程序

    万次阅读 多人点赞 2018-04-03 19:34:23
    即:JAVA程序只能在装了JVM的电脑上运行,这就是java一处编写,到处运行的原理(如果你用C++编写exe程序,则一个程序需要针对windows不同系统写不同版本的代码,java则不用)。关于这点,有兴趣的可以百度下“java跨...
  • Java入门到精通,此文档共分为3部分,此为第一部分基础篇
  • 目前发现最好的java入门知识汇总(有源码)

    千次阅读 多人点赞 2019-12-25 11:30:32
    Java 基础 总结 Java 的一些基础特性。 Java 开发环境 Java 基础语法特性 Java 基本数据类型 Java 类和对象 Java 方法 Java 数组 Java 枚举 Java 控制语句 Java 异常 Java 泛型 Java 反射 Java 注解 Java 高级 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 613,417
精华内容 245,366
关键字:

java入门

java 订阅