欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java从入门到放弃系列

程序员文章站 2022-10-03 16:15:07
Java从入门到放弃系列——本文详细讲了Java快速入门的精髓,也总结了自己在学习过程中的收获,希望对正在学习Java的伙伴们有所帮助!...

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

一、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从入门到放弃系列
Java从入门到放弃系列
Java从入门到放弃系列
Java从入门到放弃系列

四、Java基础知识

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

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

(二)关键字与标识符
1.关键字
Java从入门到放弃系列
Java从入门到放弃系列
2. 标识符及其命名规则
标识符:用来表示变量名、类名、方法名、数组名和文件名的有效字符序列 。

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

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

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

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

(四)键盘输入操作
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之前的所有字符。

(五)运算符与表达式
Java从入门到放弃系列
关于运算符与表达式的详细请看这里:

(六)三种注释方法
Java从入门到放弃系列

(七)流程控制
1.顺序、分支、循环三种结构
关于三种结构的详细请看这里:

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

五、Java中的类与对象

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

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

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

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

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

(三)定义类的语法
Java从入门到放弃系列
类的访问控制符只有public; abstract和final相互对立,不能同时应用在一个类的定义中。

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

class Cylinder   //定义圆柱体类Cylinder
{
    double radius;     //声明成员变量radius
    int height;        //声明成员变量height
    double 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即代表调用此成员的对象例如:
Java从入门到放弃系列
(七)参数的传递方法
1.类的方法既可以有返回值也可以带参数
2.以变量为参数调用方法
3.以数组作为参数或返回值的方法调用

关于参数传递的详细请看这里:

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

例如,若将
      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.异常处理的基本概念
Java从入门到放弃系列

2.Java异常处理机制
Java从入门到放弃系列

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

六、OJ经典例题实战

(一)对象排序
Java从入门到放弃系列
Java从入门到放弃系列

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类中的常用方法
Java从入门到放弃系列

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");
        else
        	System.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"));
    }
}

本文地址:https://blog.csdn.net/Bertil/article/details/107334869

相关标签: Java