Java基础知识大概总结

2023-12-31 18:32

本文主要是介绍Java基础知识大概总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

潦草的总结

1、第一个程序

1、代码示例

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

2、注释

1、单行注释://
2、多行注释:/* */
2、初识类

1、一个java源文件中可以定义多个class类。

2、在java源文件中只要有一个class的定义,必然会对应生成一个class的文件。

3、public修饰的类不是必须的,可以没有。

4、public修饰的类如果有的话,public修饰的类名必须和源文件的文件名一致。

5、一个java源文件只能有一个public修饰的类。

6、示例代码

public class Test{public static void main(String[] args){System.out.println("Test");}
}
class Test2{}
class Test3{}
3、标识符和关键字

1、标识符:凡是程序员可以自己命名的单词都是标识符。

2、标识符的命名规则:

  1. 标识符必须有字母(包括中文)、数字、下划线(_)、美元符号($)组成,不能含有其他符号。
  2. 标识符不能以数字开头。
  3. 标识符不能是关键字或保留字。
  4. 标识符严格区分大小写。
  5. 标识符理论上没有长度限制。

3、标识符的命名规范:

  1. 接口名和类名首字母大写,后面每个单词的首字母大写,遵循驼峰命名规则。
  2. 变量名和方法名首字母小写,后面每个单词的首字母小写,遵循驼峰命名规则。
  3. 常量名的所有字母全部大写,多个单词之间使用下划线连接(_)。
  4. 见名知意。
4、变量

1、变量:变量是内存中存储数据的最基本的单元,可以看作是一个存储数据的盒子。

2、变量的声明赋值:数据类型 变量名 = 变量值

3、变量可以重新赋值。

4、变量的分类:在类体内、方法体外声明的变量是成员变量,在方法体内声明的变量是局部变量,局部变量只在当前方法中有效,方法执行完毕之后该变量会被释放。

5、示例代码:

package test;public class Test {public static void main(String[] args) {String name = "张三"; //String类型的变量int age = 18; //int类型的变量System.out.println(name + "今年" + age + "岁"); //访问变量}
}
5、数据类型

1、java中的数据类型

数据类型占用字节数
byte1
short2
int4
long8
float4
double8
boolean1
char2

2、int

public class Test {public static void main(String[] args) {//在java语言中,整数类型字面量有4种表示形式:二进制、八进制、十进制、十六进制int a = 0b10; //二进制System.out.println(a); //2int b = 010; //八进制System.out.println(b); //8int c = 10; //十进制System.out.println(c); //10int d = 0x10; //十六进制System.out.println(d); //16}
}
public class Test {public static void main(String[] args) {/*在java语言中,整型字面量默认被当做int类型处理,如果希望字面量被当做long来处理,需要在字面量后面加上l/L,建议大写L,小写l和1傻傻分不清*/int a = 100;System.out.println(a);long b = 200; //存在自动类型转换,小容量自动转换为大容量System.out.println(b);long c = 300L; //不存在自动类型转换System.out.println(c);long d = 2147483647; //正确,int类型最大值是2147483647System.out.println(d);/*错误,编译器先将2147483648看作是int类型的数值,而2147483648超出了int类型的最大值,所以在没有赋值之前就已经报错了long e = 2147483648; //Error:(24, 18) java: 整数太大System.out.println(e);*/long f = 2147483648L; //正确System.out.println(f);}
}

3、自动类型转换:小容量自动转换为大容量

byte-->short-->int-->long-->float-->double
char-->int-->float-->double

4、强制类型转换:数据类型 变量名 = (数据类型) 变量名,存在精度损失

public class Test {public static void main(String[] args) {long x = 100L;System.out.println(x);long y = (int)x;System.out.println(y);}
}

5、当一个整型字面量的值没有超出byte/short的取值范围的时候,这个字面量可以直接赋值给byte/short类型的变量。

public class Test {public static void main(String[] args) {byte a = 127; //正确System.out.println(a);/*Error:(7, 18) java: 不兼容的类型: 从int转换到byte可能会有损失byte b = 128; System.out.println(b);*/short x = 32767; //正确System.out.println(x);/*Error:(12, 19) java: 不兼容的类型: 从int转换到short可能会有损失short y = 32768; System.out.println(y);*/}
}

6、计算机在任何情况下都只能识别二进制,计算机在底层存储数据的时候,一律存储的是二进制的补码形式。正数的原码、反码、补码一样,负数的反码是原码符号位不变,其余位按位取反,补码是反码加一。

public class Test {public static void main(String[] args) {/*对于一个正数来说:二进制原码、反码、补码是同一个,完全相同int i = 1;对应的二进制原码:00000000 00000000 00000000 00000001对应的二进制反码:00000000 00000000 00000000 00000001对应的二进制补码:00000000 00000000 00000000 00000001对于一个负数来说:反码是原码符号位不变,其余位按位取反,补码是反码加一byte i = -1;对应的二进制原码:10000001对应的二进制反码(符号位不变,其它位取反):11111110对应的二进制补码(反码+1):11111111*/byte b = (byte)150;System.out.println(b); //-106}
}
public class Test {public static void main(String[] args) {//byte、short、char做混合运算时,各自先转换为int类型再运算char c = 'a';byte b = 1;System.out.println(c + b); //98/*Error:(14, 21) java: 不兼容的类型: 从int转换到short可能会有损失short s = c + b;short s = (short)c + b;编译器不知道这个加法的最终结果是多少,只知道是int类型的*/short s = (short)(c + b);/*Error:(19, 19) java: 不兼容的类型: 从int转换到short可能会有损失int a = 1;short x = a;编译器只知道a是int类型的,并不知道a中存放的值是多少*/}
}

7、浮点型数据:默认数据类型是double

public class Test {public static void main(String[] args) {//Error:(5, 19) java: 不兼容的类型: 从double转换到float可能会有损失//float f = 100.47;float f = 100.47F; //正确//float f = 100.47f; //正确//float f = (float)100.47; //正确System.out.println(f);}
}

8、boolean类型只有两个值:true和false,不参与类型转换

9、char:用单引号引起来的单个字符

6、运算符

1、从键盘输入

import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner s = new Scanner(System.in);//接收一个整数int num = s.nextInt();System.out.println("输入的整数是:" + num);//接收一个字符串String str = s.next();System.out.println("接收的字符串是:" + str);}
}

2、算术运算符

算术运算符说明
+
-
*
/
%取余
i++i先运算,然后i的值自加1
++ii的值先自加1,再运算
i–i先运算,然后i的值自减1
–ii的值先自减1,再运算
import java.util.Scanner;public class Test {public static void main(String[] args) {int x = 10;int y = x++;System.out.println("x="+x+",y="+y); //x=11,y=10int z = ++x;System.out.println("x="+x+",z="+z); //x=12,z=12int i = 10;int j = i--;System.out.println("i="+i+",j="+j); //i=9,j=10int k = --i;System.out.println("i="+i+",k="+k); //i=8,k=8}
}

3、关系运算符

关系运算符说明
>大于
>=大于等于
<小于
<=小于等于
==大于
!=不等于
注:=赋值运算符

4、逻辑运算符

逻辑运算符说明
&逻辑与
|逻辑或
!逻辑非
&&短路与
||短路或
短路与&&和逻辑与&的区别:首先这两个运算符的运算结果没有任何区别,完全相同。只不过“短路与&&”会发生短路现象。即当左边的表达式值为false的时候,右边表达式不执行,这种现象叫做短路现象。从效率方面来说,&&比&的效率高一些。因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。
短路或||和逻辑或|的区别与上同理。

5、赋值运算符

赋值运算符说明
=
+=
-=
/=
*=
%=
public class Test {public static void main(String[] args) {//使用扩展运算符,永远不会改变表达式的运算结果byte b = 100;//b = b + 20;//Error:(9, 15) java: 不兼容的类型: 从int转换到byte可能会有损失b += 20; //正确,相当于b = (byte)(b+20);System.out.println(b); //120byte c = 127;c += 1;System.out.println(c); //-128,byte类型}
}

6、三目运算符

public class Test {public static void main(String[] args) {/*三目运算符:布尔表达式?表达式1:表达式2执行原理:布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果。*/int a = 10;String str = a>0 ? "a是正数" : "a是负数";System.out.println(str); //a是正数}
}

这篇关于Java基础知识大概总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556828

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏