前言:
1. 笔者的java没有经过真正系统的学习过,只是跟着书上自学的。所以有些地方难免会理解错误之类的,如果看到错误的地方,请指出来,或者有什么不理解的地方也可以提出来,大家一起进步。

2. 这篇教程是一个学习方向的引导,且只针对基础入门(更加进阶的知识笔者也还在学习)。

3. java的基础入门知识网上有很多,很多大神的博客里也有总结,笔者不认为自己能比大神总结的好。所以在这篇教程里,很多基础知识笔者会直接引用一些大神的博客和网上的一些资料,做一个汇总。当然,同时也会加入笔者自己的理解,说一些笔者学习时踩过的坑,分享一些心得。

话不多说,进入正题:

java 简介
简单的说,java是一门面向对象编程语言,吸收了C/C++的优点,摒弃了C/C++复杂的指针等内容,也不需要用户手动释放内存空间。java本身还具备了很强的可移植性,通过将源代码编译成二进制字节码,然后通过不同平台的java虚拟机来解释执行字节码,从而实行了“一次编译,到处执行”的跨平台特性。

Java的应用领域非常广泛。可以做应用系统、互联网网站、以及移动端的安卓等。

想了解更多的java的发展历史和语言特性,可以点击这里。
 
java 环境配置
"工欲善其事,必先利其器",学习java首先要配置java运行所需要的java环境,这个网上也有很多教程了,我也不详细讲了。

java环境配置教程:
window环境:win7、win10

linux环境:通用教程、云服务器(centos7)

Mac环境:Mac

集成开发环境安装:
初学者推荐eclipse,安装和使用都比较简单,网上也有很多教程,如window用户可以看这篇教程。下文的例子都是基于eclipse环境,但如果你使用其他IDE也完全不影响代码运行。

笔者现在用的是IntelliJ IDEA,功能相比eclipse更强大,更智能,尤其在代码提示和补全方面做得很好。笔者一开始学java的时候,也是用的eclipse,后面学java web的时候,就慢慢转用IntelliJ IDEA了,然后再回不来了。简单说说两者的优缺点。

IntelliJ IDEA:功能强大、各类炫酷实用插件,智能化代码提示与补全,debug也很方便智能,适合开发大型项目。但是安装包很大,运行内存占用比较高,完整版收费(几百美元一年,但学生可以用教育邮箱免费申请使用资格),社区版虽然免费但是阉割了很多功能

eclipse:免费!!安装包小(几百兆),解压即可使用,简单易上手。不足之处是代码提示和补全不够智能,插件很多但实用性不足。但是作为一款免费软件,eclipse已经非常棒了,对于初学者来说也完全够用。

很多初学者配置环境时都会遇到一些莫名的问题,大部分都是因为jdk的路径问题引起。所以大家配置环境的一定不能照搬教程里的路径,要根据自己电脑里的jdk路径来配置。如果配置环境出现问题,这时候可以根据报错信息等百度看下原因。实在不行,可以 根据教程“重新配置环境”,这个方法可以解决大部分问题。(eclipse 不能正常运行也可以试试卸载重装。。)。其次也可能和jdk的版本及eclipe版本有关,下载的时候一定要根据你所使用的系统的版本来选择jdk版本和eclipse的版本,否则就会出错.

这里我还要补充的是 有关java专业的一些术语:

JRE(Java Runtime Environment):运行Java程序的用户使用的软件,包含了java虚拟机却不包含编译器。

JDK(Java Development Kit):编写java程序的程序员所使用的开发工具包,JDK里包含了JRE。

Server JRE :在服务器上运行java环境的软件

SE (Standard Edition):用于桌面或简单服务器应用的java平台。(我们现在正在学习的)

EE(Enterprise Edition):用于复杂服务器应用的java平台。

ME(Micro Edition): 用于手机和其他小型设备的java平台。

J2(Java 2):一个过时的术语,用于描述1998~2006之间的java版本。

SDK(Software Development kit):一个过时的术语,用于描述1998~2006之间的JDK。

到这里,默认你已经成功配置好了环境,成功运行了eclipse。

(备注:1、eclipse默认是英文的,但也提供了中文语言包,下面有些教程的eclipse界面是中文的,但是笔者建议读者使用英文版,毕竟使用英文版软件、系统是一个程序员必须要学会习惯的

2、如果你不想用eclipse,完全可以选择其他你喜欢开发环境,如NetBeans和IntelliJ IDEA都是很棒的开发环境。)

java 第一个程序
下面开始练习用eclipse来写出你的第一个java程序,通过这个小程序你可以了解java最基础的语法,以便我们后续的学习。不要小看这个程序,几乎所有java程序都有这样的声明格式。

相关教程:java 第一个程序。

java 数据类型

java 是一门强类型的语言。这意味着必须为每一个变量声明一种类型。在java中一个有8种基本类型,四种整型(byte,short,int,long),两种浮点(float,double),一种字符类型char,一种用于表示真值的boolean型。

相关教程 : java 数据类型。

要注意的是:

1. 读者后面会接触到一个字符串类型String,每个用双引号括起来的字符串都是String类型的实例,如:

String e = "";//一个空字符串
 String hi= "hello";
但是,String不是基本类型, 是标准java类库提供的一个预定类(类和对象的概念后续会讲到)。两个String类型相加的效果为两个字符串的拼接:

String m = "abc";
String n = "def";
String p = a+b;//p = "abcdef";
int i=13;
String p = "abcdef"+i;// p="abcdef13"; 13被自动转换成字符串处理
关于String的用法先简单了解下,后面等学习了对象和类的概念,我们再回头来了解下String类型。

2. 在C语言里,可以用整数1和0代表代表布尔值true和false,但是,在java里,整数值和布尔值不能进行相互转换。

3. 在java中,所有的数值类型所占据的字节数量与平台无关(int 永远占4个字节,long永远占8个字节)。

java 变量
学完了数据类型,我们来学变量。

在java中,每个变量都有一个类型。声明变量类型时,变量的类型位于变量名之前,如:

double salary;
int days;
long population;
boolean done;
相关教程:java 变量

由于读者没有学习到修饰符及对象和类的相关知识,上面的教程可能会有些看不懂,但不必担心,我们这个小节学习的是变量,后面会讲到其他相关的知识。

这里还想做几点补充:

1. 变量的类型除了前面所讲八大基本类型,还可以是类名(如String 就是标准包里的一个类的名称)。

2. 变量的命名规则:

(1)变量名必须是一个以字母开头并由字母或数字构成的序列,且不能包含空格和java保留关键字。

(2)尽量使你的变量名有意义,容易一眼看出它本身所表达的意义,避免使用a,b,c等无意义的变量名。推荐使用驼峰命名            法来规范变量名。

3.在C/C++里区别变量的声明和定义,但是在java中,不区分变量的声明与定义。

int i=10;//是一个定义
extern int i;//是一个声明

java 运算符

学习了数据类型及变量,下面我们就来了解下数据之间是怎么进行运算的.

相关教程:java 运算符

补充:

任何数除以0,在运行过程中会抛出一个异常(java异常机制后面也会讲到,这里可以先理解成报错),负数的平方根的结果为NaN(不是一个数字)。

java 输入输出
为了增加后面示例程序的互动性,需要程序能够从控制台接收输入(标准输入流),并在控制台中以适当的形式输出(标准输出流)。

这里要补充一个知识点:在java里,点号( . )用于调用方法(在C语言中被称为的函数)。通用的语法为:

obeject.method(parameters);//这里表示的是调用了名为object对象的method方法,括号里是方法的参数
注意,对于一个方法,即使是没有参数也需要使用空括号

标准输出流:

打印输出到“标准输出流”(即控制台窗口)是一件非常简单的事情。

在我们学习的java的第一个程序时,我们已经接触了标准输出流,并在控制台中输出了“Hello World!”。

{
      System.out.println("Hello World!");
}
     在这里,使用了System.out对象并调用了它的println方法并传递给他一个字符串参数(“hello world”)。println方法可以将传递给它的参数显示在控制台上。每次调用println都会在新的一行显示输出(如果想在输出后不换行,可以使用println,如System.out.print("hello");)。

补充:

1.调用println方法也可以不传递参数,此时,将打印一个空行。

2.括号内可以使用“+”拼接字符串,实际上我们经常这么使用。

System.out.println("Hello"+"World!");//在控制台中输出Hello world!
    System.out.println("H"+"e"+"l"+"l"+"o");//在控制台中输出Hello

标准输入流:

标准输出流很简单,但是读取“标准输入流”System.in就没有那么简单了。

首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。(构造函数和 new操作符在下一篇教程讲到)

Scanner in = new Scanner(System.in);
    其次,你还要在程序的最开始添加上一行:

import  java.util.Scanner;

这句话的作用是:引入java.util包下的Scanner类。这句话现在不理解完全没没关系,你可以暂时理解成“类似C/C++调用函数时需要声明的头文件”。现在你只需要套用模板就可以了。下面我给出个例子:

import java.util.Scanner;
 
/**
 *标准输入输出流的简单实例
 */
public class Test {
    public static void main(String[] args) {
        //构造一个Scanner对象,命名为 in (你完全可以选择其他名字),并与System.in关联
        Scanner in = new Scanner(System.in);
        //标准输出流
        System.out.println("what is your name?");
        //调用nextLine方法,从控制台读取一个字符串,并赋值给name;
        //值得说明的是,从方法名上看,nextLine可以读取一行内容,实际上也是这样的,你可以输入一个很长很长的字符串,直到你敲下回车键。
        String name = in.nextLine();
        //同样,读取一个整数,并赋值给age
        System.out.println("How old are you");
        int age = in.nextInt();
        //打印刚刚输入的信息
        System.out.println("your name:"+name+"  your age:"+age);
    }
}
运行示例:

补充:想要读取不同的数据类型,需要调用不同的方法,

nextLine() 读取输入的下一行字符串,可以包含空格(遇到Enter键视为结束符)

next()        读取输入的下一个字符串(遇到空格键、Tab键或Enter键视为分隔符或结束符)

nextInt()        读取输入的下一个整数

nextDouble() 读取并转换下一个表示整数或浮点数的字符序列

类似的,还有next.Byte(), nextFloat , nextLong(), nextShot()方法,可以根据名字得出用途

java 控制流程
和任何其他程序设计语言一样,java使用条件语句和循环语句确定控制流程。

教程:循环结构,分支结构

拓展:

带标签的break语句

与C/C++不同,java提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。有时候在嵌套很深的循环语句中会发生一些不可预料的事情。此时可能会更加希望跳到嵌套的所有语句之外,但是添加一些额外的条件判断实现各层循环的检测很不方便,这是使用带标签额break语句就很方便了。

注意:标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号(:)。

下面是一个伪代码示例

Scanner in =new Scanner(System.in);
int n;
read_data:               //该标签标记的整个while语句块(即从while的大括号开始,到大括号结束)
while(...){
...
  for(...){
     n=in.nextInt();
     if(n<0)
        break read_data; // 通过执行带标签的break跳转到带标签的语句块的末尾
   }
}
//break后,程序跳到这里并向下继续运行
if(...){
....
}

注意:

1. 带标签的break语句很容易让人想起C语言的goto语句,但是java虽然把goto当成保留字符,但却没有提供任何用法。

2. 这个方法只能跳出语句块,而不能跳入语句块。

3.可以将标签应用到任何语句中,甚至可以应用到if语句或者块语句中。

(块是指由一对大括号括起来的若干条简单java语句)

java 方法(Method)
java里的"方法"(method)可能在其他语言(如C语言)里被称为"函数"(function)。简单的说,比如你为了求两个数的最大公因数,写了好多行代码,但如果需要求好多组数的最大公因数,你可以把这些代码用一个 "{}"括起来,并起一个名字,这样当需要用的时候,按照方法名字调用即可。

教程:java 方法

上述的教程看到"方法调用"的内容即可,后续的 构造方法、java值传递、以及可变参数的内容后面的教程会讲到。

方法的重载:
简单的说,方法重载就是同一个方法名,不同的参数类型以及参数个数。有时候,会出现这样一种情况,你要设计一个方法,但是这个方法的形参类型和个数是不确定的,在C语言里,你可能就要设计多个不同的函数,且函数名不能一样,这样就会出现一个问题,调用函数的时候,非常麻烦,要针对参数的不同做出判断和处理;但是在Java里,由于有了方法的重载,你可以把方法名设置成一样的,只需要改变方法的形参列表,这样的好处,调用该方法的时候,Java虚拟机会根据你调用方法时传入的具体参数类型及个数选择相应的方法调用。

教程:方法重载

注意:

1. java允许重载任何方法,而不只是构造方法。

2. 方法的签名:方法名及参数类型。 值得注意的是方法的返回类型不是方法签名的的一部分,即,不能有两个名字形同、参数类型也相同,返回类型却不同的方法。

这篇教程只是讲了java的一些基础语法,下一篇我们将开始讲java面向对象编程的思想。
————————————————
版权声明:本文为CSDN博主「man_zuo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/man_zuo/article/details/80033833

Java基础入门-自学之路相关推荐

  1. Java 基础入门,小白提升路线图

    1000+最新Java面试题 获取学习路线资料啦 Java的基础知识就像我们所住的房子的地基,如果地基不稳,上面所盖的楼房再宏伟,也是没人敢去入住的,同理Java的基础不牢固,以后也很难成为真正意义上 ...

  2. Java基础入门:IDEA软件安装和软件初始化设置

    IDEA是一个专门针对Java的集成开发工具(IDE),由Java语言编写.所以,需要有JRE运行环境并配置好环境变量. 它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是I ...

  3. Java基础入门-详细总结

    Java基础入门知识总结 一.java基础 1.1 java基础知识 1.2java的基本数据类型 1.3运算符 1.4循环结构 1.5数组 二.面向对象 2.1方法 2.2面向对象 2.3内存管理 ...

  4. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  5. java基础入门课后习题_《Java基础入门》课后习题及答案

    <Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 <Java基础入门>课后习题 第1章Java开发入门 一.填空 ...

  6. 叮!您收到一份超值Java基础入门资料! 1

    Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java ...

  7. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

  8. JAVA中整型常量的长度,Java基础入门篇(三)——Java常量、变量,

    Java基础入门篇(三)--Java常量.变量, 一.Java常量 (一)什么是常量 常量指的是在程序中固定不变的值,是不能改变的数据.在Java中,常量包括整型常量.浮点型常量.布尔常量.字符常量等 ...

  9. 大数据必学Java知识(一):Java基础入门语法和安装

    Java基础入门语法和安装 1. Java概述 1.1 Java语言背景介绍(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应用) 2. ...

最新文章

  1. 什么是python-三分钟了解什么是Python?python环境搭建
  2. sql远程mysql服务器查询_sql server 使用链接服务器远程查询
  3. 织梦wap.php绑定域名,dedecms织梦cms 手机站移动端 绑定设置独立M或wap域名的方法...
  4. 数据结构与算法 | 快速排序:Hoare法, 挖坑法,双指针法,非递归, 优化
  5. 转:什么是 Base64编码
  6. idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
  7. 测试服务器IO和网速的脚本
  8. 迅雷使用积分制的真正作用和目的   [揭密迅雷]
  9. 中国1,3丁二醇市场趋势报告、技术动态创新及市场预测
  10. 2019: 属于BERT预训练语言模型之年
  11. 【学术分享】推荐一个免费下载外文文献的网站
  12. html5 视频字幕制作工具,短视频如何添加字幕?10分钟学习5款视频字幕制作工具,干货!...
  13. [听风]TBC单体插件数据统计Recount
  14. iOS开发之NSLocalizedString,多个本地化语言(Xcode9.2)
  15. 阿里副总裁、达摩院副院长金榕被曝离职!AI科学家集体“逃离“大厂…
  16. 自媒体平台图文创作建议和技巧
  17. Python——数字金字塔
  18. PTA最短工期 详细解释 为什么最短反而是最长?
  19. CCSC考试基本情况
  20. 同样是90后别人家的孩子已经是年薪百万算法工程师,而你呢?

热门文章

  1. android 字体风格,安卓字体大师2.1.0发布:全新界面风格 适配更多机型
  2. 如何用没有小篆体的photoshop cc 2014上制作刻章
  3. 如何实现欧姆龙C200H的PLC远程程序上下载?
  4. 关于MediaRecord一边录制一边拍照的问题
  5. 4. Fomula-Valuation and Risk Models
  6. 对于互联网广告投放,为何CPA受企业欢迎,CPM却占主流?
  7. 计算机语言送祝福,二十种编程语言齐送鼠年祝福
  8. window gpo_ADCycleGroups-多层GPO逐步引入工具
  9. elasicsearch suggest用法
  10. 带你深入理解期望、方差、协方差的含义