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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip