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

相关文章

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件