java基础知识一

news2024/11/29 13:32:39

1、Java语言概述

1、java的出现标志着真正的分布式系统的到来

2、Java与c++的区别

2.1、全局变量

Java中没有全局变量,使用类中的公共的静态变量作为这个类的全局变量

2.2、指针

Java中没有任何在指针操作

2.3、条件转移指令

Java中没有goto语句,通过异常处理机制try-catch-finally来代替

2.4、内存管理

Java拥有内存回收机制,保证了系统资源的完整性,能够自动回收长时间不使用的文件

2.5、数据类型的一致性

对数据类型的位数分配是固定的

2.6、类型转换

在Java语言中对对象的处理进行严格的相容性检查,防止不安全的转换

2.7、不支持

Java不支持头文件、结构、联合、预处理(宏定义)

3、特点

简单性。完全面向对象、平台无关性、安全性(严密的语法检查、内存自动管理),多线程

4、编译与解释

首先编写Java源程序(后缀名为.java),然后进行编译(检查语法格式),会生成一个字节码文件,字节码文件可以在任何装有Java虚拟机的平台运行(保证了其平台无关性)

5、基本语法成分

标识符:由字母、数字、下划线、$组成,不能以数字开头

6、补充

一个Java源文件内可以有多个类,但至多有一个public类,且public类的源文件名必须与这个类的名字相同,若没有public类,则源文件名随意

2、Java语言基础

1、数据类型简介

1.1、基本数据类型

​ 1、整数类型:byte,short,int,long

​ 2、浮点类型:float,double

​ 3、字符类型:char

​ 4、布尔类型:boolean

1.2、引用数据类型

数组、类、接口

1.3、补充

基本数据类型的变量保存数据值,引用数据类型的变量保存地址

1.4、各数据类型的对比
数据类型关键字所占字节
布尔型boolean无明确规定
字节型byte1个字节
短整型short2个字节
整型int4个字节
长整型long8个字节
字符型char2个字节
单精度浮点型float4个字节
双精度浮点型double8个字节

2、常量

2.1、整型常量

Java语言的整型常量默认为int类型

2.2、实型常量

eg.1e3、1.e3、.e3

浮点型实型常量不带后缀默认为双精度常量

2.3、布尔常量

true,false

2.4、字符型常量

用单引号‘’括起来

2.5、字符串常量

用双引号" "括起来

3、变量

// 变量格式
		数据类型符 变量列表 [=初始值]
//eg.
	int i;
	long k = 1;
	double x , y = 1;

如果变量未初始化就进行输出,会编译错误

变量说明确定了:该变量占用内存单元的数量、数据在内存的表示方式、数据的取值范围

4、符号常量

// 定义形式
[static] final 数据类型 标识符 [= 常量]

最终变量:只能赋值一次

最终变量 != 常量

5、数据的输入

// 1.一次只能读入一个字节
System.in.read()
// 2.JOptionPane.showInputDialog
对话框界面,返回结果为String类型
// 3.Scanner 类
Scanner scan = new Scanner(System.in)

6、数据类型的转换

java可以自动完成级别低的变量向级别高的变量的转换

但级别高的变量向级别低的变量转换时,需要使用显示类型转换运算

byte、short、char在一起运算时,会首先转换为int类型进行运算

byte b1 = 5;
short s1 = 6;
short s2;
s2 = b1 + s1; // 产生错误

复合运算“+=、-=、*=、/=、%=” 会自动进行类型转换,不需要强制类型转换

short s = 3;
int t = 5;
s += t;	   //正确
s = s + t; //错误

7、补充

%运算符其操作数可以是浮点数

+可用来连接两个字符串

System.out.print(1+1+"6")	//26
System.out.print("6"+1+1)	//611

整数被0除会产生异常,浮点数被0除将会得到无穷大或NaN

3、Java语言控制结构

1、关系运算符

名称符号
大于>
大于等于>=
小于<
小于等于<=
等于==
不等于!=

返回boolean类型的数据

2、逻辑运算符

名称符号说明
!真为假,!假为真
&&两个都为真时为真,否则为假
||有一个为真则真
异或^两个数不同时为真

当&&第一个变量为假时,会直接跳出该条件判断,不会进行第二个变量的计算

当||第一个变量为真时,会直接跳出该条件判断,不会进行第二个变量的计算

3、顺序结构

自上而下

4、分支结构

4.1、格式
// if-else / if-else if……else 语句
if(逻辑表达式、条件判断)
	执行语句
else if(判断条件)
    执行语句
………………
else 
    执行语句
    
// switch 语句
switch(表达式)
{
        case 常量表达式1;语句序列1;break;
        case 常量表达式2;语句序列2;break;
        case 常量表达式3;语句序列3;break;
        ……
        default:语句序列
}
/*
switch 的语句判断条件可以接受 byte、short、int、char、String、枚举类型
各常量表达式的值不能相同,不能包含变量贺函数调用
switch 会顺序查找,知道找到第一个匹配的case值,开始顺序执行后面所有的语句,直到遇到break
*/

if : 用于对一个表达式的值进行判断

switch : 用于对几个确定的值进行判断

4.2、条件运算符(三目运算符)
逻辑表达式1 ? 表达式2 : 表达式3
    
// eg.
max = ( x > y ) ? x : y;  // 返回较大的值

5、循环结构

5.1、while循环
//语句格式
while(逻辑表达式)
{
 	循环体   
}
5.2、do……while循环
//语句格式
do{
    循环体;
}
while(判断条件);
5.3、for循环
// 语句格式
for(表达式1;表达式2;表达式3)
{
    语句块;
}
5.4、for each循环
//语句格式
for(变量:集合)
{
   	循环体
}
// eg.
int[] a = new int[11];
for(int element:a)
{
    System.out.println(element);
}
5.5、结束循环语句
类型说明
break结束此循环,跳出循环体
continue结束本次循环,进行下一次循环

4、Java数组和方法

1、数组概念

数组是具有相同数据类型有限个同名变量的有序集合,每一个数据被称为该数组的元素

下标从0开始

通过数组名加数组下标来使用数组中的数据

2、定义一个数组

2.1、声明数组
//声明数组的格式
// 1
数组元素类型 数组名[];
int a[];
// 2
数组元素类型[] 数组名;
int[] a;
2.2、创建数组(分配内存空间)
//格式
// 1
数组元素类型[] 数组名 = new 数组元素类型[数组元素个数];
int[] a = new int[10];
// 2
数组元素类型[]  数组名;
数组名 = new 数组元素类型[数组元素个数]
int[] a;
a = new int[10];
2.3、补充

声明数组是在栈中分配一个地址,仅仅是给出了数组名和元素的数据类型,无法正常使用,此时调用会报错

必须要在堆空间中为其分配一个空间,即使用new申请一个空间(在堆中的数据有默认值)

在栈中的数据没有默认值

变量可以出现的地方数组元素都可以出现

可以使用 数组名.length 得到数组中元素的个数

3、注意

必须先定义一个数组(声明+创建)才能使用

数组是一个指针,指向一个堆的空间

4、数组初始化

4.1、静态初始化
// 在定义数组的同时就位数组元素分配空间并赋值
int[] a = {3,5,8};  //不能指定数组的大小
4.2、动态初始化
// 数组声明和为数组元素分配空间并赋值的操作分开进行
// 方法一
int[] a = new int[3];
a[0] = 3, a[1] = 5, a[2] = 8;
// 方法二
int[] a = new int[]{3,5,8}; //此方法无法指定长度

5、二维数组

1、不要求二维数组的每一维的大小相同
// eg.
int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[7];
2、Java中直接支持多维数组,是通过对一维数组的嵌套形式来声明的

在这里插入图片描述

public class Main {
    public static void main(String[] args) {
        float[] a = new float[12];
        int [][] b = new int[3][6];
        System.out.println(a.length); //12
        System.out.println(b.length); //3
        System.out.println(b[0].length); //6
    }
}

6、方法

6.1、概念

实现特定功能、可被调用并能返回值的程序段

避免了重复性操作、有利于模块化设计

6.2、方法声明
// 格式
[修饰符] [static] 返回值类型 方法名([参数列表]){
    语句序列;
    [return [返回值]];
}
6.3、静态方法

static修饰的方法

6.4、关于引用传递和值传递

Java规定,所有类型的参数传递都是“值传递”,但是传递引用类型参数时,相当于创建了一个指向内存地址的变量,通过修改该地址的值来实现引用修改

6.5、重载方法

一个类中有多个同名方法但带有不同的参数列表,称为方法的重载

重载方法必须在参数列表加以区分,不能通过返回值类型进行区分

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【day 01】初始vue

Vue的相关背景&#xff1a; vue2 > vue3 >vue实战 vue Taylor otwell (程序员中的网红) 框架 库 &#xff08;功能 方法&#xff09;axios 框架 生态 引入第三方功能库 社区 Vue2 Vue3 需要准备的小工具 vscode : snipper Vetur 浏览器需要准备 Vue Devtools Vue 引入方式…

nvm版本控制工具安装及使用

一、nvm介绍 nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、nvm下载安装及使用 2.1 nvm下载 安装包…

【C++】容器篇(三)—— stack的基本介绍及其模拟实现

前言&#xff1a; 在之前的学习中我们已经了解了 vector 和 list &#xff0c;今天我将带领学习的是关于STL库中的 stack的学习&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;基本介绍 1、基本概念 2、容器适配器 &#xff08;二&#xff09;基本使…

Flutter 笔记 | Flutter 功能性组件

拦截返回键&#xff08;WillPopScope&#xff09; 为了避免用户误触返回按钮而导致 App 退出&#xff0c;在很多 App 中都拦截了用户点击返回键的按钮&#xff0c;然后进行一些防误触判断&#xff0c;比如当用户在某一个时间段内点击两次时&#xff0c;才会认为用户是要退出&a…

docker 服务环境搭建(mysql、rabbitmq、redis、nginx、springboot)

一般来说一个项目&#xff0c;百分之80都会用到以上这些&#xff0c;尤其是产品初期的demo 这些我都写过博客&#xff0c;但是我每次要去安装&#xff0c;都要去我不同的博客里面翻找&#xff0c;很烦&#xff0c;把他们聚在一起&#xff0c;方便我以后cv&#xff0c;就是这篇博…

注意力Transformer

注意力 注意力分为两步&#xff1a; 计算注意力分布 α \alpha α 其实就是&#xff0c;打分函数进行打分&#xff0c;然后softmax进行归一化 根据 α \alpha α来计算输入信息的加权平均&#xff08;软注意力&#xff09; 其选择的信息是所有输入向量在注意力下的分布 打…

基于中序有序的二叉搜索树

文章目录 什么是二叉搜索树二叉搜索树的中序遍历二叉搜索树的查找查找的非递归写法查找的递归写法 二叉搜索树的插入非递归递归 二叉搜索树的删除非递归递归 二叉搜索树的使用场景k模型kv模型 什么是二叉搜索树 二叉搜索树是普通二叉树的升级&#xff0c;普通二叉树除了存储数…

3、js - 垃圾回收机制

1、基础概念 &#xff08;1&#xff09;js内存的生命周期 -1- 内存分配&#xff1a;当声明变量、函数、对象时&#xff0c;系统会自动分配内存给它们 -2- 内存使用&#xff1a;即读写内存&#xff0c;也就是使用变量、函数 -3- 内存回收&#xff1a;使用完毕&#xff0c;由垃圾…

时间跟踪工具:Timemator Mac汉化版

Timemator是一款Mac平台上的时间跟踪工具&#xff0c;它可以帮助用户记录和分析日常工作和任务所花费的时间。Timemator提供了多种时间跟踪功能&#xff0c;包括自动跟踪应用程序和文档、手动添加时间记录、设置定时器等&#xff0c;让用户可以轻松记录和管理时间。 活动时间表…

互联网及SaaS行业如何落地体验管理?

3月25日&#xff0c;「体验家XMPlus」携手PMTalk成功举办了以“2023用户体验新趋势与数据增长实践”为主题的线下沙龙。 在本次活动中&#xff0c;有100多位来自不同企业的产品经理前来参与&#xff0c;大家聚集一起互相交流、分享经验。“体验家”的产品总监李若晨先生也进行了…

[RSA议题分析] Aikido Turning EDRs to malicious wipers using 0-day exploits

文章目录 简介议题分析wiperEDRWindows of Opportunity 总结 简介 本篇议题是由SafeBreach实验室的Or Yair带来的&#xff0c;主要通过利用EDR的删除恶意软件的能力和windows软连接与延迟删除文件的能力去制造一个可以在普通户权限下删除任意文件的恶意软件 - Aikido。这本质上…

科技云报道:汽车云,云计算换挡后的下一个“赛点”?

科技云报道原创。 从去年开始&#xff0c;汽车云似乎成为了云计算赛道的“香饽饽”。 尤其是在下半年&#xff0c;无论是阿里、腾讯、华为三大云巨头&#xff0c;还是百度云、京东云、字节云等奋力争夺“第四朵云”的玩家&#xff0c;均已各种形式“刷新”了其汽车云战略。玩…

Revit中窗族的立面出图设置和构件显隐

​  一、窗族的立面出图设置 Revit中&#xff0c;除了平面的出图设置以外还有立面的出图设置。 例如&#xff1a;如何在立面中&#xff0c;使窗户在精细详细程度显示的是窗的全部主体结构而在粗略/中等详细程度下是显示这样的样式呢? 在窗族样板中&#xff0c;打开立面&…

unity uitoolkit学习

使用UI Toolkit Debugger查看元素 1、打开面板 2、找到元素 在UI Builder窗体&#xff0c;别忘了打开Preview再选择元素 3、可以选择不同类型的窗体 4、查看元素的样式 需要注意的是下面的样式会覆盖上面的 5、调试 修改内置控件样式 1、找到PanelSettings>Theme St…

如果STM32/GD32一类的ARM单片机解除读写保护的方法

文章目录 前言一、打开软件二、连接到目标芯片1.连接2.若目标芯片无写包含3. 若存在读写保护 三、解除读写保护的操作&#xff1a;1. 打开Options Bytes对话框2. 操作步骤 四、工具下载链接 前言 有时候啊&#xff0c;使用ST-Link给STM32一类的ARM单片机下载程序的时候&#x…

Fastjson过滤器用法

fastjson git地址&#xff1a;https://github.com/alibaba/fastjson/wiki SimplePropertyPreFilter 用法 用于过滤某个属性 SimplePropertyPreFilter filter new SimplePropertyPreFilter();filter.getExcludes().add("gender");A a new A(1,"zhangsan"…

CSS样式的三种引入方式及优先级

说明&#xff1a;网页开发有三种技术&#xff0c;分别是html、css和js&#xff0c;分别对应页面的结构、表现和动作。css样式引入&#xff0c;是指把对页面的渲染作用到html上&#xff0c;有以下三种方式&#xff1a;行内式、内嵌式和外联式。 第一种&#xff1a;行内式&#…

噶了呀,现在的00后这么卷的吗?

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

KDZD自动脱扣型绝缘靴(手套)耐压试验装置支架

一、概述 KDZD自动脱扣型绝缘靴&#xff08;手套&#xff09;耐压试验装置支架是根据《DLT 976-2017 带电作业工具、装置和设备预防性试验规程》、《DLT 1476-2015电力安全工器具预防性试验规程》、《GBT 17622-2008带电作业用绝缘手套》、《CB21148 2020足部防护 安全鞋》等相…

VBA学习-循环语句

目录 一、基础知识学习 二、单元格格式 三、循环语句与判断语句 一、基础知识学习 1、对单元格赋值 Sub 赋值()对单元格进行赋值Range("A1").Value 100End Sub 2、多区域赋值 Sub 多个区域赋值() 多区域赋值Range("B1:C2").Value 200 End Sub 3、不…