首页 > 编程语言 >java的一些基础知识

java的一些基础知识

时间:2024-07-20 17:29:05浏览次数:9  
标签:java String int 数据类型 基础知识 运算符 names 数组 一些

文章目录

JDK、JRE、JVM

​ JDK - Java开发工具包

​ JRE - Java运行时环境

​ JVM - Java虚拟机

注:JRE包含JVM,源码(.Java文件)编译成字节码文件(.class文件),运行在JVM中

变量

​ 在程序执行过程中可以发生改变的量

关键字

​ Java提供的具有特殊意义的单词

标识符

​ 给类、接口、枚举、变量、常量取名时用到的字符

规则

​ 1.区分大小写

​ 2.不能以数字开头

​ 3.不能使用除$和_(下划线)以外的特殊字符

​ 4.不能使用Java关键字

​ 5.由于编码问题,一般不使用中文

数据类型

基本数据类型(简单数据类型)

1.数值型

​ 整数类型:

​ 字节型 - byte - 1字节(1字节占8bit)

​ 短整型 - short - 2字节

​ 整型 - int - 4字节

​ 长整型 - long - 8字节

​ 浮点型:

​ 单精度浮点型 - float - 4字节

​ 双精度浮点型 - double - 8字节

2.字符型 - char - 2字节

3.布尔型 - boolean - 4字节

注:1.byte取值范围:-128~127

​ 2.int取值范围:-21亿~21亿

​ 3.char取值范围:0~65535

​ 4.boolean单独使用,底层用int做表示,所以占4字节;但是在数组里使用,用byte表示,占1字节

​ 5.浮点类型使用IEEE754的标准(在运算时可能丢失精度)

​ 6.boolean不能和其他类型兼容

引用数据类型(除基本数据类型以外的数据类型)

​ 数组、类、接口、枚举

运算符

算术运算符:+、-、*、/、%(取余)、++、–

赋值运算符:=、+=、-=、*=、%=、/=、

关系运算符:==、!=、>=、<=、<、>

逻辑运算符:&、&&、|、||、^、!

三目运算符:变量=(表达式)?值1:值2

位运算符:&、|、^、<<、>>、>>>

注:1.<<:数据的二进制左移一位,相当于原数乘二;>>>:无符号右移一位,右移时不管符号

​ 2.赋值底层逻辑:

​ byte num=10

​ num += 5;——>num = (byte)(num+5);

​ 3.关系运算符和逻辑运算符的结果必须是boolean类型

​ 4.&和&&、|和||的区别

​ &&:前者判断为false后,直接返回false,不判断后者,相当于短路,效率更高

​ &:前者判断为false后还会判断后者
​ |:判断前者为true后,还会判断后者

​ ||:判断前者为true后,不会判断后者,直接返回true,效率更高

​ 5.三目运算符:表达式为true,返回值1,反之,返回值2

Java流程控制语句

1.顺序语句:方法里的代码从上往下运行

2.分支语句:条件成立,就执行相应代码块

​ if分支、switch分支

3.循环语句:条件成立,就重复执行代码块

​ for循环、while循环、do-while循环

4.特殊的流程控制语句

​ break、continue、retrun、lable

分支语句

if和switch的区别

​ 1.if表达式只能存放boolean,而switch可以存放byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7)

​ 2.if判断区间、复杂条件,而switch只能判断单个值

switch判断的底层原理:

​ 把数据转换成int类型再做判断,byte和short都向上转型为int,int直接使用,char则获取字符的Unicode值,枚举则获取对象编号,字符串则获取hash码+equals判断

循环语句

for和while和do-while区别:

​ 区别1 - 表达式:

​ for(初始化变量;判断条件;更新变量){}

​ while(判断条件){}

​ do{}while(判断条件);

​ 共同点:判断条件的结果必须是boolean类型,true就循环,false就跳出循环

​ 区别2 - 执行顺序:

​ for、while:先判断,再执行

​ do-while:先执行一遍,再判断

​ 区别3 - 应用场景:

​ for:循环次数确定时使用

​ while:循环次数不确定时使用,先判断,再执行

​ do-while:循环次数不确定时使用,先执行一遍,再判断

特殊的流程控制语句

break:作用于循环中,表示结束当前循环

continue:作用于循环中,表示跳过当前循环,进入到下一次循环

return:作用于方法中,表示结束当前方法

lable:给循环做标记

方法

含义:含有特殊含义的代码块

好处:减少代码冗余

分类:

​ 1.无参无返回值的方法

public void method(){}

​ 2.带参数的方法

public void method(String s){}

​ 3.带返回值的方法

public String method(String s){ return s;}

注:返回的数据必须与返回值类型相同

​ 4.静态方法

​ 属于类的方法,可以使用类名直接调用

public class New(){
    //静态方法
    public static int add(int a,int b){ return a+b;}
}

​ 5.成员方法

​ 属于对象的方法,成员方法使用对象调用

public class New(){
    //成员方法
    public int add(int a,int b){ return a+b;}
}

形参

声明方法时规定的参数,该参数必须设置参数类型

实参

调用方法时传入的实际参数,该参数必须和方法的形参类型兼容

数组

问:数组是什么数据类型?

记住!除基本数据类型以外的数据类型都是引用数据类型

​ 数组相当于是一种特殊的盒子,可以存储多个元素,这些元素按顺序排列,并且每个元素都有自己的位置,我们可以通过位置来访问或者修改其中的元素

​ 元素都有编号,叫做下标或者索引,它从0开始

​ 数组一旦初始化成功,长度一般不可变

数组动态初始化和静态初始化

静态初始化:程序员指定元素,长度由系统自动分配

​ String[] names = {“元素1”,“元素2”,“元素3”,…};

动态初始化:程序员指定长度,元素由系统自动分配

​ String[] names = new String[5];

ps:动态初始化的默认元素

​ 整型:0

​ 浮点型:0.0

​ 字符型:‘ ’(空字符)

​ 布尔类型:false

​ 引用类型:null

数组的复制

//浅表复制,直接复制
	String[] names = {"小红","小绿","小黑"};
	String[] newNames = names;

//深表复制,先复制长度,再将值一个一个复制过去
	String[] names = {"小红","小绿","小黑"};
	String[] newNames = new String[names.length];
 	int index = 0;
	for(String element:names){
 	newNames[index++] = element;
	}

数组的扩容

String[] names = {"小红","小绿","小黑"};
int newCapacity = names.length<<1;
//问:<<代表什么?
//数据的二进制左移一位
String[] newNames = new String[newCapacity];
int index = 0;
for(String element:names){
	newNames[index++] = element;
}

数组的删除

String[] names = {"小红","小绿","小黑","小粉","小黄"};
for(i=3;i<names.length-1;i++){
    names[i] = names[i+1];
}
//完成后的数组names = {"小红","小绿","小黑","小黄","小黄"};

二维数组

相当于多个一维数组组成的集合

//创建二维数组,第一个一维数组的元素为3个,第二个一维数组的元素为4个
String[][] names = new String[2][];
String[] s1 = {"aaa","bbb","ccc"};
String[] s2 = {"xxx","yyy","zzz","xyz"};
names[0] = s1;
names[1] = s2;

若有错误,欢迎指正!

标签:java,String,int,数据类型,基础知识,运算符,names,数组,一些
From: https://blog.csdn.net/nzksk/article/details/140558452

相关文章

  • 面向对象的一些知识
    文章目录类与对象类里有什么内容?类和对象的关系对象和引用的关系对象在哪里开辟空间private修饰符-私有化this关键字-本对象封装构造方法static修饰符-静态的继承优缺点子类能否继承父类所有属性和方法super关键字重写/复写访问修饰符Objectfinal抽象类抽象方法......
  • Java----抽象类与接口
    知识框架: 一.抽象类1.1抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。如下图所示:说明: Animal类是动物类,每个动物都有叫的......
  • JAVA 数据结构 - 数组
    一、固定数组Arrays数组用来存储固定大小的同类型的元素;1、声明,初始化,访问int[]myIntArray;double[]myDoubleArr;String[]myStrArr;intsize=10;double[]myDoubleArr=newdouble[size];double[]myList={1.9,1.4,2.3,9.8};for(inti=0;i<myList.le......
  • Java Swing Loading转圈的进度提示框
    JavaSwingLoading转圈的进度提示框具体只需要两个类AnimatedPanel.javaInfiniteProgressPanel.java 前因:我们开发的web应用,有个奇葩的需求,需要客户触发到客户端与第三方交互的地方加个Loading效果,已经脱离了web程序页面交互范围了,只是通过socket进行通信交互......
  • Java中的枚举详解
    文章目录概述使用枚举枚举的实现枚举的性能枚举与常量枚举集合类枚举与泛型枚举与反射概述枚举在Java中是一种特殊的类,用来定义一组固定的常量。它在Java5中引入,提供了一种类型安全的方式来定义和使用常量集合。尽管enum看起来像是新的数据类型,但它实际上是一个受限......
  • JavaScript 基本语法
    JavaScript基本语法1、简介1.1、概念1.2、JavaScript的组成部分1.3、前端三大件2、编写及运行3、关键字(具有特殊作用的字)4、变量4.1、声明变量的关键字:var4.2、命名规范4.3、经典的变量命名法5、运算符5.1、赋值运算符5.2、加性运算符5.3、乘性运算5.4、一元运算符5.5......
  • JAVA流程控制
    Scanner对象Scanner类获取用户的输入基本语法​ Scannerscanner=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。has方法初始默认值为“True”,能正常......
  • JAVA实现简单的计算器(整数)
    计算器实现基本流程实现加减乘除四个独立的方法。编写输入数据的语句(Scanner方法)。用switch来选择一个计算方式。添加输入选择计算方式的语句。importjava.util.Scanner;publicclassdemo03_calc{publicstaticvoidmain(String[]args){System.out.p......
  • java学习进度
    7.14(1)三元运算符格式:关系表达式?表达式1:表达式2;运行顺序:判断关系表达式是否为true,是则运行表达式1,否则运行表达式2代码示例://比较大小importjava.util.Scanner;publicclassSanyuan{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Syste......
  • 使用Java和Neo4j构建图数据库应用
    使用Java和Neo4j构建图数据库应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代应用开发中,图数据库在处理复杂的关系和网络数据时表现出色。Neo4j是一个流行的图数据库,它允许我们以图的形式存储和查询数据。本文将介绍如何使用Java和Neo4j构......