java语言程序设计总结

news/2025/1/7 11:02:48/文章来源:https://www.cnblogs.com/su004117/p/18653405

202302151228 苏海
一.1.程序流程:计算机程序(program)
申请内存空间
输入原始数据
数据处理
输出处理结果
常用高级语言:C、C++、Java、Python、C#
2.Java语言的特点
➢ 借鉴了C/C++语言
➢ “纯”面向对象
➢ 字节码(bytecode)
➢ Java虚拟机(Java Virtual Machine,JVM)
➢ 生态圈
➢ 开源文化,免费共享1.1 从C/C++到Java
Java语言与C/C++语言的相似之处
主函数main()
数据类型,例如double
运算符和表达式,例如+、-、、/
语句都以分号“;”结束
注释:/
…… */、// ……
Java语言与C/C++语言的不同之处:输入/输出
C语言:scanf()、printf()
C++语言:scanf()、printf(),cin、cout
Java语言:System.in、System.out
Java语言的键盘输入
import java.util.Scanner;
Scanner sc = new Scanner( System.in );
int x = sc.nextInt(); // 为int型
变量输入数据
double x = sc.nextDouble(); // 为double型变量输入
数据
float x = sc.nextFloat(); // 为float型变
量输入数据
char x = sc.nextChar(); // 为char型变量
输入数据
Java语言的显示器输出
System.out.print( …… ); // 显示内容(不换行)
System.out.println( …… ); // 显示内容后换一行
System.out.print( “Hello, world” );
System.out.println( “Hello, world” );
System.out.print( “Hello” + ”, world\n” );
System.out.println( “Hello, world” + 5 ); // 显示结果:
Hello, world5
int x = 5; double y = 10.6;
System.out.println( x +“, ” +y ); // 显
示结果:5, 10.6
二.java的语言基础
Java语言的基础语法
数据类型:计算机存储二进制数据要考虑两个因素,即存储位数和存储格式
➢ 存储非负整数可以使用无符号格式;如需存储负数则必须使用有
符号格式
➢ 如需存储实数,则必须使用浮点格式,即“阶码+尾码”的存储格

➢ 计算机使用定长存储,如果程序员选择不当,则保存数据时可能
会出现溢出或损失精度等问题
➢ 为了让程序员在申请内存时能方便地指定存储位数和存储格式,
计算机高级语言引入了数据类型(data type)的概念
➢ Java语言将预定义的数据类型称为基本数据类型(primitive data type)

存储位数:一个字节:(00000000)2 ~ (11111111)2,即0~255
定长存储
• 8位(1字节):0 ~ 255
• 16位(2字节):0 ~ 65535
• 32位(4字节):0 ~ 4294967295
存储格式: 将最高位作为符号位:0表示正数,1表示负数
有符号格式、无符号格式

变量与常量
变量:程序中的数据包括原始数据、中间结果、最终结果等,Java语 言使用变量(variable)来保存这些数据。
定义变量:为变量申请内存空间
访问变量:写入数据或读出数据
定义变量时要考虑三方面的内容
变量语句的语法:
数据类型指定了变量的存储位数和存储格式。
变量名需符合标识符的命名规则。
可在一条语句中定义多个具有相同数据类型的变量,变量之间用“,”隔开。
举例:定义两个变量ctemp和ftemp
double ctemp ; // 计算机为double型变量ctemp分配8个连续的字节作为其内存单元,
// 并将以浮点格式在该内存单元中存储数据
double ftemp ;

double ctemp, ftemp ; // 在一条语句中定义两个double型的变量
常量
在编写程序时就能确定其数值大小,例如1.8和32
程序员可以将数值直接书写在程序代码中,它们也被称为字面常量
不同数据类型常量有不同的书写
整数常量
• 十进制:20、-20
• 八进制:020、-020
• 十六进制:0x20、-0X20
• 二进制:0b10100、-0B10100
整数常量默认为int型
可以添加后缀“L”(大小写都可以)将其转为long型,例如: 20L、-20l

运算符与表达式
表达式
运算符、操作数、括号
表达式语句,用于处理数据

运算符
优先级、结合性
双目运算符、单目运算符
算术运算、位运算、关系运算、逻辑运算
表达式结果
5 + 3:8,int
5.5 + 3:8.5,double
5 / 2:2(不是2.5),int
括号
Java表达式只使用小括号“( )”
中括号“[ ]”和大括号“{ }” 被用在其他场合
其他算术运算符
取正/取负运算符+、-:+32、-32、-x
取余运算符%:10 % 6 = 4
自增运算符++:x++
后置
•前置:++x
int x =10; (x++) 2、(++x) 2 11 10 20、 11 22 自减运算符--:x--、--x
三.程序设计方法
功能:定义保存数据的变量
输入原始数据
处理数据
输出处理结果
结构化程序设计方法
➢ 函数是分解出的算法零件
➢ 结构体类型是分解出的数据零件
➢ 程序升级
struct Rectangle // 修改成员a、b的数据类型
{
double a; // 原来为:int a;
double b; // 原来为:int b;
};
double Area(double length, double width) // 原来为:int Area(int length, int width)
{ return ( length
width ); }
double Len(double length, double width) // 原来为:int Len(int length, int width)
{ return ( 2
(length+width) ); }
double Area(double length, double width); // 原来为:int Area(int length, int width);
double Len(double length, double width); // 原来为:int Len(int length, int width);
数据类=数据+算法
程序升级
class Rectangle // 修改头文件2.h中的类声明部分
{
public:
double a; // 原来为:int a;
double b; // 原来为:int b;
double Area( ); // 原来为:int Area( );
double Len( ); // 原来为:int Len( );
};
// 修改程序文件2.cpp中的类实现部分
double Rectangle::Area( ) // 原来为:int Rectangle::Area( )
{ return ( ab ); }
double Rectangle::Len( ) // 原来为:int Rectangle::Len( )
{ return ( 2
(a+b) ); }
封装:定义类的程序员可以将需要被外部直接访问的成员开放出来,
同时将不需要被直接访问的成员隐藏起来
开放:定义类时将必须被外部访问的成员开放出来,以保证类
的功能可以被正常使用
隐藏:定义类时将不需要被外部访问的成员隐藏出来,以防止
它们被误访问
公有权限public。被赋予公有权限的类成员是开放的
私有权限private。被赋予私有权限的类成员将被隐藏
抽象
为客观事物建立数据模型。
➢ 属性(property)
➢ 方法(method)
➢ 客观对象
➢ 分类:具有相同数据模型的客观对象
组装
➢ 类:描述客观对象数据模型的图纸
➢ 对象:按照图纸生产出的产品,图纸的实例
➢ 用类定义对象
CirclePool cObj1, cObj2;
cObj1 = new CirclePool( ); // 清水池对象
cObj2 = new CirclePool( );// 污水池对象
类的定义
方法成员的语法细则
• 方法的4大要素
• 方法名
• 形式参数列表
• 方法体
• 返回值类型
• 方法签名:返回值类型方法名(形式参数列表)
• 重载方法
public void set( ) { // 不带参数的方法set():从键盘输入时间
Scanner sc = new Scanner( System.in );
hour = sc.nextInt(); minute = sc.nextInt(); second = sc.nextInt();
}
public void set(int h, int m, int s) { // 带参数的方法set():用参数设定时间
hour = h; minute = m; second = s;
}
类成员访问权限的语法细则
公有权限public
私有权限private
保护权限protected
默认权限(未指定访问权限)
引用数据类型
基本数据类型(primitive data type)
byte、short、int、long、float、double、char、boolean
Java语言中,使用基本数据类型定义变量,定义时直接为变量
分配内存单元
后续程序将通过变量名访问变量的内存单元

类类型、数组类型、接口类型、枚举类型等
先定义引用数据类型的引用变量
再用运算符new创建引用数据类型的对象并将所返回的对象 引用保存到引用变量中
后续程序通过引用变量访问对象及其下属成员
三种不同的变量
字段:定义在类中的变量成员,用于保存属性数据。字段相当
于是类中的全局变量,可以被类中的所有方法成员访问
局部变量:类中方法成员在方法体内部定义的变量,仅能在所
定义的方法体中访问
形式参数(形参):类中方法成员在头部小括号里面定义的变
量,用于接收原始数据。形参仅能在所定义的方法体中访问
类与对象的编译原理
调用对象方法成员语句的编译
Clock obj1 = new Clock( ); // 创建钟表对象obj1
obj1.set( 8, 0, 0 ); // 将obj1的时间设为8:0:0
obj1.show( ); // 显示obj1的时间,显示结果:8:0:0
set( obj1, 8, 0, 0 );
void set(Clock this, int h, int m, int s) { … }
this.hour = h; this.minute = m; this.second = s;
show( obj1 );
类的静态成员
全局变量、外部函数
纳入到类中管理:静态成员
Java语言不允许在类外定义全局变量或函数
静态字段的内存分配
静态字段的语法细则
关键字static:在类中定义静态字段需使用关键字static进行
限定,通常放在访问权限之后,数据类型之前。定义静态字
段时可以初始化
在本类访问静态字段:在本类的方法成员中访问静态字段,
直接使用字段名访问,访问时不受权限约束。这一点与访问
普通字段是一样的
不能通过this访问静态字段:静态字段是类字段,没有包含
在对象中,因此不能使用关键字this访问静态字段。这一点
与访问普通字段是不一样的。注:this是指向当前对象的引
用变量
在类外访问静态字段:在类外其他方法(例如主方法)中访
问静态字段需以“类名.静态字段名”的形式访问,或通过任
何一个该类对象引用以“对象引用名.静态字段名”的形式
访问。类外访问静态字段受权限约束。
在类外访问静态字段时可以不创建对象,直接通过类名访问 Clock. totalClock
静态成员的应用
以类的形式管理全局变量或外部函数
将具有相同属性值的字段提炼出来,定义成静态字段,这样可
以让所有对象共用同一个静态字段,从而减少内存占用。
将专门处理静态字段的方法定义成静态方法
public class MathTest { // 测试类:测试Java语言中数学类Math的静态成员
public static void main(String[] args) { // 主方法
System.out.println( "random()= " +Math.random() ); //随机数函数(静态方法)
System.out.println( "random()= " +Math.random() );
System.out.println( "sqrt(36)= " +Math.sqrt(36)); // 求平方根函数(静态方法)
System.out.println( "sin(30)= " +Math.sin(30 *Math.PI/180) ); // 正弦函数(静态方法)
}
}
数组(array)
元素(element)、下标(subscript)
一维数组、二维数组
遍历
定义数组
先定义数组类型的引用变量
int iArray[ ]; // 定义一个int型数组的引用变量iArray
int [ ]iArray; // 定义一个int型数组引用变量iArray
再创建数组
iArray = new int[5]; int iArray[ ] = new int[5]; // 定义引用变量的同时创建数组
图形用户界面程序
程序执行过程中,通常需要用户输入原始数据或选择
功能(输入),程序将计算得到的中间结果和最
终结果反馈给用户(输出)
用户与程序之间的输入和输出操作统称为人机交互
人机交互的形式主要有两种
命令行界面 图形用户界面
在组件类Component上绘图的基本原理和编程方法
绘图目的。一是程序需要在组件中向用户显示信息,二是组件因
尺寸改变等原因需重绘内容
绘图过程
Java虚拟机统一负责绘图操作的调度
当需要在组件中显示信息时,程序员应当调用组件的重绘方
法repaint()
Java虚拟机在接收到绘图请求后会调用组件的绘图方法paint()
继承并扩展组件类,重写组件的绘图方法paint()
repaint()方法进行间接调用
组件的绘图对象。Java虚拟机在调用组件的绘图方法paint()时, 会传递一个图形类Graphics的绘图对象
容器中组件的布局管理
设置容器中图形组件的位置和大小,这被称为容器的布局管理
手工布局
设置布局管理策略:自动布局
流式布局
边框布局
网格布局
w.setTitle( "网格布局GridLayout" ); // 设置窗口标题
Container cp = w.getContentPane();
cp.setLayout( new GridLayout(3, 3) ); // 3行3列的网格
for(int n = 0; n < btn.length; n++) // 添加组件
cp.add( btn[n] );
cp.validate();
Java事件响应机制
用户操作某个组件:用户触发了某种事件
用户所操作的组件:事件源(event source)
事件类:区分用户的不同操作
每种事件一个算法接口:监听器(listener)接口
文本组件类
使用文本编辑框接收用户的键盘输入,输入结果为字符串
(String)类型
Java API为文本编辑框定义了两个类
文本字段类JTextField,用于单行输入
文本区域类JTextArea,用于编辑多行文本
这两个类是从同一个文本组件类JTextComponent继承并扩
展而来的
字符串类
Java API将字符数组和字符串处理方法封装成字符串

字符串类String:存储和处理字符串常量
可变字符串类StringBuilder:适用于存储和处理字符串变量
多线程可变字符串类StringBuffer:与StringBuilder功能相 同,但可用于多线程程序
字符串类String的用法
定义字符串对象
String s1 = new String( );
String s2 = new String( “China中国” ); // 初始化
String s3 = new String( s2 ); // 初始化
操作字符串对象
System.out.println( s2.length() ); // s2的长度为7
System.out.println( s2.substring(1, 3) ); // 返回1~3之间的子串“hi”(不含3)
字符串可以相加
String s = s2 + “,你好“; s += “,你好“;
字符串类String的使用
修改字符串。String类字符串对象在改变内容时,不是改变对象自己,而
是会生成一个新的字符串对象。例如,
String s = new String ( “abc” ); // 引用变量s指向字符串对象“abc”
s += “ef”; // 相加后,内存中会有2个字符串对象“abc”和 “abcef”
// 此时s改变指向,引用新对象“abcef”
比较两个字符串的大小
String s = new String("cd");
System.out.println( s.compareTo("ab") ); // 返回正数,因为"cd"大于"ab"
System.out.println( s.compareTo("cd") ); // 返回0,因为"cd"和"cd"相等
System.out.println( s.compareTo("ef") ); // 返回负数,因为"cd"小于"ef
字符串类String的使用
➢ 静态方法format。这是String类提供的一个生成格式化字符串 的方法,其用法非常象C语言里的printf()、sprintf()。例如,
int x = 5; double y = 16.8;
String s = String.format("x= %d, y= %5.2f", x, y);
System.out.println( s ); // 显示字符串s

接口Comparable
“可比较大小的”接口
public interface Comparable {
int compareTo(T o); // 比较两个对象大小的抽象方法
}
字符串类String实现了这个接口
是泛型编程,将在后面讲解。
任何一个类都可以实现Comparable接口
可变字符串类StringBuilder
➢ 字符串类String存储字符串常量
➢ 可变字符串类StringBuilder可存储字符串变量
• StringBuilder类中的字符串可以追加、插入
、替换和删除
• StringBuilder类有长度(length,实际存储的字符个数)和
容量(capacity,最多能存储的字符个数)两个概念
• 当要保存的字符串长度大于容量时,StringBuilder类将自
动增加容量(即自动分配更多的内存),StringBuilder类
相当于是可变长的字符数组
包装类具有与数据类型相关的常量和处理方法
常量主要包括数据类型的最大/最小值、占用字节数等
方法主要包括比较大小、类型转换等
这些包装类在使用方法上基本一样,以Integer类为例进行讲解
TCP/IP协议
http://www.cau.edu.cn
浏览器获取服务器信息
客户端应用程序与服务器应用程序的通信
计算机网络中的协议(protocol)
RFC(Request For Comments)
传输控制协议(Transmission Control Protocol,简称TCP)
• 网间互连协议(Internet Protocol,简称IP)
• TCP/IP协议
TCP/IP网络四层模型
应用层
传输层
网络层
链路层
TCP和UDP
TCP:通信双方先建立连接(connection),然后再进行双向
数据传输。传输控制协议(Transmission Control Protocol,简
称TCP)
UDP:直接将数据单向传输给对方,不需要事先建立连接,
事后也不需要对方回复。用户数据报协议(User Datagram
Protocol,简称UDP)
TCP可靠,UDP不是百分之百可靠
发送方(sender)、接收方(receiver)
网络通信的本质是网络应用程序之间的数据传输
传输层与应用层的关系
应用层:信息
传输层:数据,数据包(packet)
程序员与应用层、传输层的关系
应用层协议用于规范网络服务的内容及服务流程,而传输层协议用于规
范发送方与接收方之间的通信方式
编写网络应用程序,程序员需按照应用层协议拟定通信内容,再根据传
输层协议选择通信方式(例如TCP或UDP),将通信内容从发送方传输
到接收方
接收方程序也可能需要对接收到的通信内容进行回复。编写接收方程序
的程序员也需要按照应用层协议的规定拟定回复内容,再通过传输层将
回复内容传输给发送方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog6_串行通信协议

Verilog内容总结6_串行通信协议一、通信协议概述 1.串行通信与并行通信串行通信(serial communication):数据通过单根数据线一位一位地传输;成本低但速度慢;适用于远距离传输,用于计算机与外设之间,如UART、\(I^2C\)、SPI并行通信(parallel communication):通过多根数…

二进制码与格雷码之间的转换

二进制码到格雷码的转换 (1)格雷码的最高位(最左边)与二进制码的最高位相同。 (2)从左到右,逐一将二进制码相邻的两位相加(舍去进位),作为格雷码的下一位。格雷码到二进制码的转换 (1)二进制码的最高位(最左边)与格雷码的最高位相同。 (2)将产生的每一位二进制…

20241407《计算机基础与程序设计》课程总结

每周作业链接汇总 第0周作业: 自我介绍第一周作业: 1.基于VirtualBox虚拟机安装Ubuntu和安装Linux系统 2.快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题第二周作业: 数字化 信息安全 *自学教材:计算机科学概论(第七版)第1章…

运算放大器在运算方面的应用

集成运算放大器与外部电阻、电容、半导体器件等构成闭环电路后,能对各种模拟信号进行比例、加法、减法、微分、积分、对数、反对数、乘法和除法等运算。运算放太器工作在线性区时,通常要引入深度负反馈。所以,它的输出电压和输入电压的关系基本决定于反馈电路和输入电路的结…

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer,和boot打交道是很常见的吧。熟悉boot的人都会知道,启动一个springboot应用,就是用鼠标点一下启动main方法,然后等着就行了。我们来看看这个main里面。 @SpringBootApplication public class ExampleApplication {public static void mai…

CF补题 950-Div.3

CF补题 950-Div.3-20250102 Dashboard - Codeforces Round 950 (Div. 3) - Codeforces A: 题目大意:给出一个字符串,要求重复的字母必须 \(\ge m\) ,求缺失字母总个数 #include <iostream> #include <map> using namespace std;map<char, int> mp;int ma…

第十五周学习总结

学期2024-2025-1 学号20241414 《计算机基础与程序设计》第十五周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第一周作业这个作业的目标 课程总结作业正文 本博客链接每周作业链接汇总整体评价…

【ADB基础】ADB及Monkey测试

什么是monkey Monkey 是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。 monkey命令说明monkey 测试命令使用及详细说明 常用命令 语法:adb shell monkey -p 包名…

20241314 《计算机基础与程序设计》课程总结

20241314 《计算机基础与程序设计》课程总结每周作业链接汇总第一周课程概论 工业革命与浪潮之巅 信息与信息安全 计算机系统概论 计算机安全 计算的限制思维作业第二周课程概论 数字化与信息安全第三周课程概论 数字逻辑门 数据类型 冯诺依曼体系第四周课程概论 计算机系统 计…

同硕计算机专业:统考+课程+源码学习资料全部免费送!

考研之路,道阻且长。对于计算机专业的学子来说,备考之路更是充满挑战。为了帮助广大考生高效备战,我在此精心整理了一套同硕计算机专业统考历年真题和复习重点、专业课程学习和相关源码资料,并免费分享给大家!我的全部学习资料都放在那里,后续我还会增加资料分享放在那里…

20241316 《计算机基础与程序设计》课程总结

20241316 《计算机基础与程序设计》课程总结第一周作业:浏览教材并提出问题第二周作业: 自学教材计算机科学概论(第七版)第1章并完成云班课测试 《C语言程序设计》第1章并完成云班课测试第三周作业:计算机科学概论(第七版)第2章,第3章 并完成云班课测试第四周作业:学习…

Windows环境下反弹shell各类姿势

在渗透测试过程中我们有时候需要通过Windows平台来反弹shell到我们的VPS主机以及CS端,那么这个过程中我们就需要借助Windows平台内置的可执行程序来执行命令,其中首选的就是powershell,本篇文章我们主要介绍如何通过Windows平台中如何通过powershell来反弹shell操作。 power…