学了将近四个月的Java了吧,总要留点什么,不然感觉自己没学过一样。所以,特别的撰写此篇文章来总结一下学习过程中的收获,分享给正在学Java的朋友,希望能对你们有一点帮助。

文章目录

  • 一、JDK的安装和Java环境变量配置
  • 二、工具介绍
  • 三、关于API文档下载及其使用方法说明
  • 四、Java基础知识
  • 五、Java中的类与对象
  • 六、OJ经典例题实战

一、JDK的安装和Java环境变量配置

二、工具介绍

1.JCreator
很久的一款开发工具了,现在也还能用的。对刚入门的新手来说,这个还不错。简单易上手,但是功能不够强大。
关于安装的流程详细请看这里:https://blog.csdn.net/Bertil/article/details/107385842

2.eclipse
这款开发工具算是大多数人所使用的吧,毕竟功能也很强大而且还可以免费安装正版。
关于安装的流程详细请看这里:https://blog.csdn.net/qq_38566465/article/details/79484286

3.IDEA
这个就很nb了,除了前面两个所拥有的基本功能外,还有可以制作前端网页设计等等,功能十分强大,深受广大后端开发者的喜爱。当然了,功能越强大所占内存也会更多,所以使用这个的话前提是要保证自己电脑的CPU承受的住。此外,IDEA的激活也会受到限制,持有校园企业邮箱的学生可以直接激活正版,其他的情况我也不是很清楚了,具体上网搜。
关于安装的流程详细请看这里:https://blog.csdn.net/weixin_43184774/article/details/100578786

工具只是个辅助,能力才是关键。我的Java授课老师曾遇到过有个学生可以用记事本直接打出很长的代码来,这就是强者的境界吧。但前提是要安装好JDK和配置好环境变量,然后才能在字符终端编译和运行程序;其次,基础肯定要很扎实,毕竟没了代码辅助功能。

三、关于API文档下载及其使用方法说明

1.下载
关于下载的流程详细请看这里:https://blog.csdn.net/Bertil/article/details/107335554

2.使用方法说明
此次难以说清,直接上图(资料来源于:Java程序设计基础第六版实验指导书)



四、Java基础知识

(一)数据类型
数据类型分为两种:基本数据类型和引用数据类型(也称复合数据类型)
1.基本数据类型
整型: byte short int long
浮点型: float double
逻辑型: boolean
字符型:char
2.引用数据类型
包括类、数组、接口等。

关于数据类型的介绍详细请看这里:https://blog.csdn.net/Bertil/article/details/107386628

(二)关键字与标识符
1.关键字


2. 标识符及其命名规则
标识符:用来表示变量名、类名、方法名、数组名和文件名的有效字符序列 。

命名规则:
(1)可以由字母、数字、下划线(—)、美元符号($)组合而成。
(2)必须以字母、下划线或美元符号开头,不能以数字开头。
(3)关键字不能当标识符使用。
(4)区分大小写。

编码习惯:类名首字母大写,变量、方法及对象首字母小写。

(三)数据类型转换
一般分为自动转换和强制转换两种。

1.自动类型转换
①转换前的数据类型与转换后的类型兼容。
②转换后的数据类型的表示范围比转换前的类型大。
条件②说明不同类型的数据进行运算时,需先转换为同一类型,然后进行运算。转换从“短”到“长”的优先关系为:
byte→short→char→int→long→float→double
2. 强制类型转换
如果要将较长的数据转换成较短的数据时(不安全),就要进行强制类型转换。强制类型转换的格式如下:

关于数据类型的转换详细请看这里:https://blog.csdn.net/Bertil/article/details/108176556

(四)键盘输入操作
Scanner是一个专门用于输入操作的类,可以使用该类输入一个对象。

例如:
Scanner reader = new Scanner(System.in);
int a = reader.nextInt();

创建的reader对象可以调用nextInt()方法来读取用户从键盘上输入的int型数据,也可用reader对象调用下列方法,读取用户在键盘上输入的相应类型的数据:
nextByte()
nextDouble()
nextFloat()
nextInt()
nextLong()
nextShort()
next()
nextLine()
此外,reader对象还可以调用nextByte()、nextFloat()、nestDouble()、nextInt()等。

next×××()被调用后,则等待用户在命令行输入数据并按回车键(或空格键、Tab键)确认。
next()和nextLine()方法表示等待用户在键盘上输入一行文本,然后返回一个String类型的数据。

next()和nextLine()区别:
next():一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,它将自动将其去掉,只有在输入有效字符之后,该方法才将其后输入的这些符号视为分隔符。
nextLine():结束符为Enter键,即返回Enter之前的所有字符。

(五)运算符与表达式

关于运算符与表达式的详细请看这里:https://blog.csdn.net/Bertil/article/details/108297472

(六)三种注释方法

(七)流程控制
1.顺序、分支、循环三种结构
关于三种结构的详细请看这里:https://blog.csdn.net/Bertil/article/details/108308128

2.循环中的跳转语句
break语句:使程序的流程从一个语句块(switch或循环结构)内跳出。
continue语句:终止当前这一轮(次)的循环,进入下一轮(次)循环。
return语句:用来使程序从方法(函数)中返回,并返回一个值。

五、Java中的类与对象

(一)面向对象和类的定义
1.类(Class)和对象(Object)是面向对象程序设计方法中最核心的概念。

类是对某一类事物的描述(共性),是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体的个体(个性),因而也称为实例(Instance) 。类描述了对象的属性(静态特征)和对象的行为(动态特征)。而对象(Object)则是类(Class)的一个实例(Instance),是个实实在在的个体。

新手刚学面向对象这块时理解起来可能会有点抽象,但是可以通过做一些简单的类设计基础题来促进理解。面向对象程序设计思想的重点是类的设计,而不是对象的设计。

(二)面向对象的基本特征

1.封装性 : 利用抽象数据类型将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系。
2.继承性:使特殊类(子类)的对象拥有一般类(父类)的全部属性与方法,同时可以增添自 身的属性和方法。
3.多态性:一个程序中同名的多个不同方法共存的情况。常用重载和覆盖。

(三)定义类的语法

类的访问控制符只有public; abstract和final相互对立,不能同时应用在一个类的定义中。

下面看一个实例——圆柱体类的定义。

class Cylinder   //定义圆柱体类Cylinder
{double radius;     //声明成员变量radiusint height;        //声明成员变量heightdouble pi=3.14;   //声明数据成员pi并赋初值void area( )   //定义成员方法area(),用来计算底面积{System.out.println("圆柱底面积="+ pi*radius* radius);}void volume( )   //定义成员方法volume (),用来计算体积{System.out.println("圆柱体体积="+((pi*radius* radius)*height);}
}

(四)局部变量和成员变量的区别

1.从语法形式上看,成员变量属于类,而局部变量是方法中定义的变量或方法的参数;成员变量可以被public、private和static等修饰,而局部变量则不能,二者都可以被final修饰。
2.从变量在内存中的存储方式看,成员变量是对象的一部分,对象是存储在堆内存的,局部变量存于栈。
3.从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在;局部变量随着方法的调用而产生,随着方法调用的结束而消失。
4.成员变量若没有被赋初值,则自动初始化默认为0(用final修饰的但没有被static修饰的成员变量必须显式赋值);局部变量不会自动赋值,必须显式赋值。

(五)对象的创建和使用
1.创建对象的步骤
声明指向“由类所创建的对象”的变量;
利用new创建新的对象,并指派给前面所声明的变量。

2.对象的使用
通过对象来引用对象成员的格式如下:
对象名.对象成员
如,volu.radius = 2.8; volu.height = 5;
如果引用的是成员方法,只要在成员方法名的圆括号内提供所需参数即可,如果方法不需要参数,则用空括号。如:volu.area()

一个类多个对象,它们的成员变量分配在不同的内存,因此修改某一对象的成员变量时其他不受影响。

(六)在类定义内调用方法
在同一个类的定义里面,某一方法可以直接调用本类的其他方法而不需加对象名。
若要强调是“对象本身的成员”的话,则可以在成员名前加this关键字,即“this.成员名”。此时this即代表调用此成员的对象例如:

(七)参数的传递方法
1.以变量为参数调用方法
2.以数组作为参数或返回值的方法调用

关于参数传递的详细请看这里:https://blog.csdn.net/Bertil/article/details/108308489

(八)匿名对象
以当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象

例如,若将Cylinder volu=new Cylinder();volu.SetCylinder(2.5, 5,3.14);改写为:new Cylinder().SetCylinder(2.5, 5,3.14);则Cylinder()就是匿名对象。

以使用匿名对象通常有如下两种情况:
1.如果对一个对象只需要进行一次方法调用。
2.将匿名对象做为实参传递给一个方法调用。

例:一个程序中有一个getSomeOne()方法要接收一个MyClass类对象作为参数,方法的定义如下:public static void getSomeOne (MyClass c){……}可以用下面的语句调用这个方法。getSomeOne(new MyClass( ) );

(九)Java异常处理机制
1.异常处理的基本概念

2.Java异常处理机制

关于Java异常处理的详细请看这里:https://blog.csdn.net/Bertil/article/details/106402047

六、OJ经典例题实战

(一)对象排序

import java.util.*;
public class Main {public static void main(String[] args) {Scanner sin = new Scanner(System.in);int count,weight;String name;if(sin.hasNextInt())count = sin.nextInt();else {System.out.println ("error input");return;}if(count <= 0){System.out.println ("error input");return;}Cat[] catArray = new Cat[count];for (int i = 0; i<count; i++){name = sin.next();if(sin.hasNextInt())weight = sin.nextInt();else {System.out.println ("error input");return;}catArray[i] = new Cat(name,weight);}    Cat.printCats(catArray); Arrays.sort(catArray, new CatNameComparator()); Cat.printCats(catArray);Arrays.sort(catArray, new CatWeightComparator());   Cat.printCats(catArray);}
}
class Cat{String name;int Weight;public Cat(String name,int Weight){this.name = name;this.Weight = Weight;}public static void printCats(Cat[] catArray){for(int i = 0;i < catArray.length;i++){System.out.println ("name="+catArray[i].name+" "+"weight="+catArray[i].Weight);}System.out.println ();}
}
class CatNameComparator implements Comparator<Cat>{public int compare(Cat c1,Cat c2){return c2.name.compareTo(c1.name);}
}
class CatWeightComparator implements Comparator<Cat>{public int compare(Cat c1,Cat c2){return c2.Weight - c1.Weight;}
}

(二)String类中的常用方法

import java.util.*;
public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);String str1 = reader.next();String str2 = reader.next();if(str1.equals(str2))System.out.println ("true");elseSystem.out.println ("false");int idx,count=0;idx=str1.indexOf(str2);while(idx>=0){idx=str1.indexOf(str2,idx+str2.length());count++;}System.out.println (count);int lastIndex = str1.lastIndexOf(str2);System.out.println (lastIndex);String newstr1 = str1.toUpperCase();System.out.println (newstr1);String newstr2 = str2.toLowerCase();System.out.println (newstr2);int num1=0;for(int i=0;i<str1.length();i++){if(Character.isDigit(str1.charAt(i)))num1++;}System.out.println (num1);int num2=0;for(int i=0;i<str2.length();i++){if(Character.isLetter(str2.charAt(i)))num2++;}System.out.println (num2);System.out.println (str1.replace("abc","cde"));}
}

Java从入门到放弃系列相关推荐

  1. redis java zset_Redis从入门到放弃系列(五) ZSet

    Redis从入门到放弃系列(五) ZSet 本文例子基于:5.0.4 ZSet是Redis中一种比较复杂的数据结构,当存储大小在128之内且member得长度在64以下,其实现为zipList,超过为 ...

  2. Redis从入门到放弃系列(一) String

    Redis从入门到放弃系列(一) String 本文例子基于:5.0.4 字符串是Redis中最常见的数据结构,底层是采用SDS,是可以修改的字符串,类似ArrayList,采用预分配冗余空间的方式来 ...

  3. Java从入门到放弃-序言

    Java从入门到放弃 前言 本人希望由浅及深的探讨java的底层原理,和编程思想,与大家一起学习提升对程序语言的认知.由于自己是理工科出身,所以对底层原理往往非常感兴趣.那么就跟我一起学习Java吧. ...

  4. java从入门到放弃(二)

    java从入门到放弃(二) //求园面积 结果保留5位小数double ymj = Math.PI*Math.pow(``2.14``,` `2``);DecimalFormat df1 =new D ...

  5. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享

     网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享 韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇 韩顺平.循序渐进学.java.从入门到精通.第1讲-内容介绍.项 ...

  6. SAP KANBAN 从入门到放弃系列之调拨模式

    之前已经有三篇文章写了后台配置相关的介绍,这里不赘述.详见: PP-KANBAN-看板概述 SAP KANBAN 从入门到放弃系列之生产补货模式 SAP KANBAN 从入门到放弃系列之采购补货模式 ...

  7. Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别

    Java从入门到放弃09-多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别 01 多态 多态指的是 ...

  8. python从入门到放弃系列恶搞短片-太惨!学Python方法用错,直接从入门到放弃!...

    原标题:太惨!学Python方法用错,直接从入门到放弃! 从你开始学习编程的那一刻起,就注定了以后所要走的路-从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在 ...

  9. 爬虫入门到放弃系列07:js混淆、eval加密、字体加密三大反爬技术

    前言 如果再说IP请求次数检测.验证码这种最常见的反爬虫技术,可能大家听得耳朵都出茧子了.当然,也有的同学写了了几天的爬虫,觉得爬虫太简单.没有啥挑战性.所以特地找了三个有一定难度的网站,希望可以有兴 ...

  10. 《Java基础》从入门到放弃系列 万字超详

    Javase详细教程 文章目录 Javase详细教程 前言 一.Java语言概述 1.1开发环境的搭建 1.1.1 JDK下载与安装 1.1.2 JDK.JRE.JVM的关系 1.1.3 path环境 ...

最新文章

  1. 【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05
  2. 【算法基础】漫画:什么是 “跳表” ?
  3. Tomcat实现session的代码逻辑分析
  4. cobaltstrick4.0系列教程(2)---用户接口
  5. 分布式是写出来的(三)
  6. Eclipse3.7 Indigo 字体设置为Courier New
  7. html:(28):后代选择器和通用选择器
  8. DiscuzX系列命令执行分析公开(三连弹)
  9. 燃烧我的卡路里 ---- Flutter瘦内存瘦包之图片组件
  10. 【C++ Primer】第五章学习笔记(循环和关系表达式)
  11. python常用代码大全-Python常用库大全及简要说明
  12. AtCoder Beginner Contest 132 解题报告
  13. Android中getDimension,getDimensionPixelOffset和getDimensionPixelSize 区别
  14. 使用WMI和性能计数器监控远程服务器权限设置
  15. 2016在电影院看过的电影
  16. 单元测试用例 php,PHP 单元测试(PHPUnit)(2)
  17. 24点游戏 java实现_java实现24点纸牌游戏
  18. GDT(全局描述表)
  19. 怎么注册公司邮箱?公司邮箱注册流程介绍
  20. android系统在中国的发展趋势,最新中国智能手机市场操作系统格局:安卓占比超八成...

热门文章

  1. 三个变量存在一个协整方程_计量经济学第12讲(时间序列计量经济学模型:协整与误差修正模型)...
  2. 计量经济学计算机实验报告,计量经济学实验报告.doc
  3. php mysql 博客,PHP操作MySQL
  4. 2015-5-10分享pdf
  5. leadbbs移花接木漏洞与加入黑客木马
  6. 无人驾驶安全报告分析
  7. 软件生命周期创建B2C电子商务网站
  8. 应用程序无法正常启动 0xc0150002
  9. iperf 的下载和使用
  10. 量子力学入门---基本概念