Java基础-01
2022/2/22 1:24:12
本文主要是介绍Java基础-01,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java 基础-01
标识符
Java 标识符只能是字母、$、_开头。
首字符之后是字母、$、_、数字的任意组合,不能有其他字符。
中文也可以,但不建议使用。
数据类型
Java是一种强类型语言,要求变量的使用要严格符合规定,所有类型都需要先定义后使用。
Java数据类型分为两大类:基本数据类型和引用数据类型。
基本数据类型
基本数据类型有:整型、浮点型、字符型、布尔型。
可以表示整型的:byte、int、short、long;可以表示的数的范围不同。其中byte占一个字节,short占2个字节,int占4个字节,long占8个字节。
可以表示浮点型的:float、double。其中float占4个字节,double占8个字节。
可以表示字符类型的:char,占2个字节。
布尔类型占1位,只有true、false。
需要注意的是:定义float、以及long类型时,需要后面加入标志。
float num1 = 1.2F; long num2 = 1200L;
引用数据类型
引用数据类型有:类、接口、数组。
常见面试题
1、有关进制转换的。
常见的进制有:二进制(0b开头)、十进制、八进制(0开头)、十六进制(0x开头)。
int i0 = 10; //十进制:10 int i1 = 010; //八进制:8 int i2 = 0x10; //十六进制:16 int i3 = 0b10; //二进制:2
2、float和double的误差问题。
例如下面的程序:
float f = 0.1f; double d = 1.0/10; System.out.println(f); System.out.println(d); System.out.println(f == d); 输出结果: 0.1 0.1 false
都是0.1,但是两个值是不相等的,因为float和double都是有限的,存在舍入误差,接近但不相等。
3、字符型的拓展---字符与数字的编码
char c1 = 'A'; char c2 = 'a'; System.out.println(c1); System.out.println((int) c1); System.out.println(c2); System.out.println((int) c2); 输出结果: A 65 a 97
计算机中存储的字符,本质都是数字,是根据编码表的一一对应。例如:Unicode编码
4、字符型的拓展--转义字符
常见的转义字符:
\t:制表符
\n:换行符
System.out.println("Hello,\tWorld"); //制表符 System.out.println("Hello,\nWorld"); //换行符 输出结果: Hello, World Hello, World
5、类型转换问题
由于Java是强类型语言,因此在运算中,不同类型的数据类型要转化为同一类型再运算。
分为强制类型转换、自动类型转换两大类。
Java运算中,存在一组优先级:byte,short,char -> int -> long -> float -> double
由高到低需要强制类型转化,由低到高会自动类型转换。
int i = 123; double d1 = i; //由低到高,不需要强制类型转换 double d2 = 123; int i5 = (int) d2; //由高到低,需要强制类型转换
需要注意的是,在强制类型转换时可能会遇到:内存溢出问题和精度问题,例如:
内存溢出问题:
int i = 128; byte b = (byte) i; System.out.println(b); //输出结果:-128 int i1 = 20_0000_0000; int i2 = 10; System.out.println(i1*i2); //输出结果:-1474836480 System.out.println((long) i1*i2); //输出结果:20000000000
byte类型只占一位,表示范围:(-128 -- 127),无法表示128!!!
20000000000超过了int所能表示的范围。因此需要转换成long类型。
精度问题:
System.out.println((int) 12.34); //输出结果:12 System.out.println((int) -12.34f); //输出结果:-12
浮点型强制转换成整型时,会把小数全都丢去。造成精度问题。
变量、常量、作用域
变量
变量分为:局部变量和实例变量。
其中,局部变量定义在方法中,只在方法中使用,且必须初始化。
实例变量定义在类中,可以不需要初始化,有默认值。
public class Demo04 { //实例变量 int i; String name; static int age; //类变量 public static void main(String[] args) { int i = 10; //局部变量 System.out.println(i); //输出为10 Demo04 demo04 = new Demo04(); System.out.println(demo04.i); //输出默认值为0 System.out.println(demo04.name); //输出默认值为null System.out.println(age); //实例变量定义为static时,称为类变量。可以直接使用。 }}
常量
常量是指:初始化后不能再改变的值。用final标识。常量名一般使用大写字符。
final double PI = 3.14;
运算符
Java语言支持以下运算符:
- 算术运算符:+、-、*、/、%、++、--
- 赋值运算符:=
- 关系运算符:>、>=、<、<=、!=、==、instanceof
- 逻辑运算符:&&、||、!
- 位运算符:&、|、^、~、>>、<<、
- 条件运算符:? :
- 拓展的赋值运算符:+=、-=、*=、/=
常见面试题
1、自增、自减的顺序问题
int a = 3;int b = ++a; // ++a,表示a自增之后,赋值给bSystem.out.println(a); //输出4System.out.println(b); //输出4int c = 3;int d = c++; // c++,表示c自增之前,先赋值dSystem.out.println(c); //输出4System.out.println(d); //输出3
++在前,表示自增之后,再赋值。
++在后,表示先赋值,后自增。
2、如何进行幂运算?
使用Math工具类里面的方法。例如:
System.out.println(Math.pow(2, 3)); //输出为: 8.0
3、区分 位运算符和逻辑运算符。
逻辑运算符:&&(与)、||(或)、!(非)
位运算符:&(按位与)、|(按位或)、!(按位取反)、^(按位异或)
有关位运算的面试题:怎么最快计算2*8?
2<<3 //2左移三位 0000 0010 -> 0001 0000
移位运算是直接对二进制进行操作,效率高。左移相当于乘2,右移相当于除2。
这篇关于Java基础-01的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略