Java语言基础知识(一)

初识Java

大一时候就看过毕向东老师的Java基础教程,感觉毕老师讲课清晰易懂,幽默风趣。当初看该系列课程时并没有完全看完,只看了部分基础课程,而且过去这么长时间,Java基础知识也忘了十之八九,因此决定重新看看毕老师的Java基础全套教程。感觉收获颇丰,现将一些我认为重要知识点进行相关记录。

1、Java语言概述

Java是一门面向对象的编程语言,其吸收了C++语言的各种优点,还把C++里难以理解的多继承、指针等一系列概念摒弃掉。其功能强大,简单易用、可跨平台。其有三种技术架构:JAVAEE(企业版)、JAVASE(标准版)、JAVAME(小型版)。

2、Java语言的环境搭建

(1)JRE、JDK

JRE(Java Runtime Environment.Java 运行环境),包括Java虚拟机(JVM:Java Virtual Machine)和Java程序所需要的核心类库。计算机中安装JRE即可运行开发好的Java程序。
JDK(Java Development Kit,Java开发工具包)JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括JRE。因此安装JDK便不需要再单独安装JRE。(开发工具包括编译工具:java.exe和打包工具:jar.exe等)。
JRE = JVM+类库
JDK:JRE+JAVA开发工具
Alt

(2)JDK的安装

1、下载JDK链接.
2、安装JDK以及配置环境变量安装细节
3、为什么要配置环境变量
当在DOS命令行窗口输入一条命令试图运行某一应用程序时会检查当前目录下是否存在这一应用程序,若不存在则会去系统已有的path环境变量中继续去查找这一应用程序。因此需要配置环境变量,让java的一些工具可以在任何地方都可以被访问到。
4、检查JDK是否安装成功:在DOS命令窗口输入java -version 若输出java的version则安装配置成功。

3、 Java程序开发

(1) Hello World

在学习一门新的计算机编程语言时候,我们一般在最开始接触到的程序就是Hello World程序。接下来我们开始编写第一个Java程序。
其共分为一下三个步骤:

1、将Java代码编写到扩展名为.java的文件中;
2、通过javac命令对该Java文件进行编译;
3、通过java命令对生成的class文件进行运行。
javac.exe进行编译
java.exe运行class文件
.java文件
.class文件
结果

Hello.java.

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

保存这段代码到Hello.java文件
进入DOS命令行窗口(Win+R输入cmd回车)
进入到Hello.java文件所在的目录下
输入javac Hello.java
输入java Demo
DOS窗口就会输出Hello World

至此,完成第一个Java程序。

2018.11.24

(2) 基本语法

1、Java语言基础组成

  1. 关键字
  2. 标识符
  3. 注释
  4. 常量以及变量
  5. 运算符
  6. 语句
  7. 函数
  8. 数组

接下来详细介绍一下其中几个重要的点。

关键字:事先定义好的、有特别意义的标识符,有时也叫保留字。关键字不能用作变量名、方法名、类名、包名和参数。Java中的关键字有:abstract、for、int、import等,关键字都是小写。

标识符:在程序中自定义的一些名称。由26个英文字母的大小写,数字0-9以及_和$组成。数字不可以用来做标识符的开头。Java语言严格区分大小写,因此要特别注意,而且标识符尽量要做到见名知意。

Java注释

//单行注释,多种计算机语言适用

/*
多行注释
多种计算机语言都适用
*/

/**
*文档注释,
*Java语言特有
*/

常量和变量
1、常量表示不能改变的数值,Java中常量有整数常量、小数常量、布尔型常量、字符常量、null常量(只有null)。
对于整数有四种表现形式:二进制(满2进1)、八进制(满8进1,0开头)、十进制(满10进1),十六进制(满16进1,0X开头)。
2、变量:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在该数据类型范围内不断变化。
定义变量的方式:数据类型 变量名 = 初始化值; 例如 int a = 0;

数据类型
在这里插入图片描述

类型转换

1、自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级为:
byte,short,char->int->long->float->double。

进行类型转换是需要满足规则:

  • 不能对boolean类型进行类型转换;
  • 不能把对象类型转换为不相关类的对象;
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能会导致溢出或者损失精度。

2、强制类型转换

  • 转换的数据类型必须是兼容的;
  • 格式:(type) value //type是要强制类型转换后的数据类型。例如:
    Demo.java.
class Demo{
	public static void main(String[] args){
		int a = 123;
		int c = 257;
		byte b = (byte)a;
		byte d = (byte)c;
		System.out.println(b);//123
	System.out.println(d);//1,因为byte型数据的最大值为127
	}
}

3、隐含强制类型转换

  • 整数默认类型是int
    Demo.java.
class Demo{
	public static void main(String[] args){
		byte a = 4;
		byte b = 3;
		byte c = 7;
		a  = b+c;
		System.out.println(a);//提示错误。因为整数默认类型是int
	}
}

运算符
Java有六种运算符,包括算术运算符:[+,-,、*,/,%,++,- -];赋值运算符:[=,+=,-=,*=,/=,(%)=,<<=,>>=,&=,^=,|=];比较运算符:[>,<,==,!=,>=,<=,instanceof];逻辑运算符:[&&,||,!];位运算符:[&,|,^,~,<<,>>,>>>]以及三元运算符:[(条件)?表达式1:表达式2]。

程序流程控制

  • 判断结构
  • 选择结构
  • 循环结构

if语句

//三种格式
//1
if(条件表达式){
	执行语句;
}
//2
if(条件表达式){
	执行语句;
}else{
	执行语句;
}
//3
if(条件表达式){
	执行语句;
}else if(条件表达式){
	执行语句;
}
...
else{
	执行语句;
}

switch

switch(表达式){
	case 取值1:
		执行语句;
		break;
	case 取值2:
		执行语句;
		break;
	...
	default:
		执行语句;
		break;	
}

while

while(条件表达式){
	执行语句;
}

do while

do{
	执行语句;
}while(条件表达式);
//无论条件是否满足,循环体至少执行一次

for

for(初始表达式;循环条件表达式;循环后的操作表达式){
	执行语句;
}
//初始化表达式只读一次,之后判断是否满足循环条件,满足则执行循环体,否则跳出循环,执行完循环体后执行循环后的操作表达式,然后再判断循环条件,如此循环往复。

break\continue

break//跳出。应用于选择结构和循环结构。
continue//继续。应用于循环结构
//这两个语句单独存在下面不可以有语句,因为执行不到,continue语句结束本次循环继续下次循环。

2018.12.1

函数
函数是定义在类中的具有特定功能的一段独立小程序,也称为方法。函数的格式一般为:

修饰符  返回值类型  函数名(参数类型 形参1,参数类型 形参2...{
		执行语句;
		return 返回值;
}

/*返回值类型:函数运行后结果的数据类型;
参数类型:形参的数据类型;
形参:变量,用于存储调用函数时传递给函数的实参;
实参:传递给形参的具体数值;
return 用于结束函数;
返回值:函数运算后的结果,该结果会返回给调用者。没有具体返回值时return后面直接用分号结束,返回值类型为关键字void。
*/

//返回和值的参数
public static int add(int a,int b){
	return a+b;
}

函数的特点

  • 定义函数可以将功能代码进行封装;
  • 便于对该功能进行复用;
  • 函数只有被调用才会被执行;
  • 函数的出现提高了代码的复用性;
  • 对于函数没有具体返回值的情况,返回值类型用关键字void表示,该函数中的return语句如果在最后一行可以省略不写;
  • 函数中只能调用函数,不可以在函数内部定义函数;
  • 定义函数时,函数的结果应该返回给调用者,交由调用者处理。

函数的重载

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可,重载与返回值类型无关,只看参数列表,重载可以方便阅读,优化程序设计

//返回两个整数的和
int add(int x,int y){
	return x+y;
}
//返回三个整数的和
int add(int x,int y,int z){
	return x+y+z;
}
//返回两个小数的和
double add(double x,double y){
	return x+y;
}

数组
同一种类型数据的集合,数组就是容器。数组可以自动给数组中的元素从0开始编号,方便操作。数组定义有两种格式

//格式1
//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] arr = new int[5];
//格式2
//元素类型[] 数组名 = new 元素类型[] {元素1,元素2,....}

int[] arr = new int[]{1,3,5,7};
int[] arr = {1,3,5,7};

内存的划分

  • 寄存器
  • 本地方法区
  • 方法区
  • 栈内存(存储的都是局部变量,变量所属作用域结束,变量自动释放)
  • 堆内存[存储的是数组和对象(数组就是对象)凡是new建立在堆中,
    每一个实体都是首地址值;
    堆内存中的每一个变量都有默认初始化值,根据类型不同而不同,整数是0,小数是0.0或者0.0f,boolean是false,char是’\u0000’;
    垃圾回收机制。
    ]
int[] arr = new int[3];
//System.out.println(arr[3]);ArrayIndexOutOfBoundsException
//当访问到数组中不存在的角标时,就会发生该异常。
//arr = null;
//system.out.println(arr[0])
//NullPointerException
//当引用型变量没有任何实体指向时,还在用其操作实体。就会发生该异常

2018.12.9

  • 如果数据出现了对应关系,而且对应一方是有序的数字编号,并作为角标使用,要想到数组的使用。可以将这些数据存储到数组中,根据运算的结果作为角标直接去查数组中对应的元素即可。查表法
//查表法进制转换
public static void toHex_1(int num){
	if(num==0){
		System.out.println("0");
		return;
	}
	//对应关系表
	char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	char[] arr = new char[8];
	int pos = arr.length;
	while(num!=0){
		int temp = num&15;
		arr[--pos] = chs[temp];
		num = num>>>4;
	}
	System.out.println("pos="+pos);
	for(int x=pos;x<arr.length;x++){
		System.out.print(arr[x]);
	}
}

二维数组

二维数组的定义方式

//格式1
int[][] arr = new int[3][2];
//打印二维数组的长度,即一维数组的个数
System.out.println(arr.length);
//打印二维数组中角标为1的一维数组的长度
System.out.println(arr[1].length)
//格式2
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];

4、 面向对象

(1) 、面向对象的概念

两种很重要的思想,面向过程思想和面向对象思想:面向过程强调的是过程(动作);面向对象强调的是对象(实体)。C语言就是面向过程的,而C++、Java以及C#是面向过程的。
面向对象是一种常见的思想,符合人们的思考习惯;面向对象将复杂的问题简单化;让曾经在过程中的执行者变为了对象中的指挥者。

(2) 、类与对象之间的关系

用Java语言对现实生活中的事物进行描述,通过类的形式来体现。对事物描述通常只关注两方面,一个是属性另一个是行为。成员函数对应行为,成员变量对应属性。只要明确该事物的属性和行为并定义在类中即可。对象其实就是该类事物实实在在存在的个体。
具有相同特性(数据元素)和行为(功能)的对象的抽象就是类,对象的抽象是类,类的具体化就是对象
成员变量与局部变量的区别

  • 成员变量定义在类中,整个类都可以访问,局部变量定义在函数、语句、局部代码块中,只在所属区域有效;
  • 成员变量存在于对内存的对象中,局部变量存在于栈内存的方法中;
  • 成员变量随对象的创建而存在,随对象的消失而消失,局部变量随所属区域的执行而存在,随所属区域的结束而释放;
  • 成员变量都有默认的初始化值,局部变量没有默认初始化值;

2018.12.16

  • 50
    点赞
  • 246
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★★★★ 23 六、 继承(面向对象特征之一)★★★★ 25 七、 接口(面向对象特征之一)★★★★ 28 八、 多态(面向对象特征之一)★★★★ 30 九、 java.lang.Object 31 十、 异常★★★★ 34 十一、 包(package) 37 十二、 多线程★★★★ 39 为什么要使用多线程 39 创建线程和启动 39 线程的生命周期 44 线程管理 45 线程同步 49 线程通信 52 线程池 58 死锁 64 线程相关类 65 十三、 同步★★★★★ 67 十四、 Lock接口 70 十五、 API 71 String字符串:★★★☆ 71 StringBuffer字符串缓冲区:★★★☆ 73 StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 Collection接口 77 Iterator接口 78 List接口 78 Set接口 80 Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 System 89 Runtime 90 Math 90 .Date:日期类,月份从0—11 92 Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 介绍IO包中扩展功能的流对象 103 十七、 网络编程 110 网络基础之网络协议篇 111 UDP传输 124 TCP传输 126 十八、 反射技术 127 十九、 Ajax原理及实现步骤★★★★★ 130 Ajax概述 130 Ajax工作原理 130 Ajax实现步骤 130 详解区分请求类型: GET或POST 131 $.ajax标准写法 134 二十、 正则表达式:其实是用来操作字符串的一些规则★★★☆ 135 二十一、 设计模式★★★★★ 136 设计模式简介 136 单例设计模式:★★★★★ 156 工厂模式★★★★★ 159 抽象工厂模式★★★★★ 163 建造者模式 170 原型模式 177 适配器模式 182 桥接模式 188 过滤器模式 192 组合模式 193 装饰器模式★★★★★ 196 外观模式 201 享元模式 204 代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式 230 状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式 244 设计模式总结★★★★★ 247 二十二、 Java其他总结 248 Java JVM知识点总结 248 equals()方法和hashCode()方法 270 数据结构 273 Array方法类汇总 304 Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362
Java语言是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。它具有简单易学、跨平台、安全可靠等特点,广泛应用于各种软件开发领域。 以下是一些Java语言基础知识: 1. Java程序的基本结构:一个Java程序由一个或多个类组成,每个类包含属性(变量)和方法(函数)。一个Java程序必须包含一个类,并且该类必须包含一个名为`main`的方法作为程序的入口。 2. 数据类型:Java语言提供了多种数据类型,包括基本数据类型(如整数、浮点数、字符、布尔值等)和引用数据类型(如数组、类对象等)。 3. 变量和常量:在Java中,使用关键字`var`或指定具体的数据类型来声明变量。变量可以被赋予不同的值,而常量则是一旦赋值就不能再改变的值。 4. 控制流程:Java语言提供了各种控制流程语句,如条件语句(`if-else`、`switch`)、循环语句(`for`、`while`、`do-while`)和跳转语句(`break`、`continue`、`return`)等,用于控制程序的执行流程。 5. 面向对象:Java是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。面向对象编程的核心是类和对象,通过定义类来创建对象,并通过对象进行方法调用和属性访问。 6. 异常处理:Java提供了异常处理机制,用于处理程序运行时可能发生的错误或异常情况。通过捕获和处理异常,可以使程序具备更好的健壮性和容错性。 7. 输入输出:Java提供了丰富的输入输出类和方法,可以实现与用户交互、读写文件等功能。 这些只是Java语言基础知识Java还有很多其他的特性和功能。如果你对特定的主题或问题有更多的兴趣,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值