java基础

char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择任何特定
的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个 char 类型占 2 个字
节(16 比特),所以放一个中文是没问题的。

char类型能否存储一个中文字符?为什么?

可以。一个char是两个字节,而一个中文也是两个字节。

字符串存储的机制是什么?

字符串会存储在常量池中。在给字符串赋值的时候,JVM 会检查常量池中是否已经存在该
字符 串,如果存在则直接引用该地址,否则会在常量池中创建该字符串然后引用该地址

1./*
2.*描述此段代码的功能:(  计算自由落体运动中物体的位置   )
3.*/
4.// 此语句意义何在?(  导入java.util包下的Scanner类   )
5.import java.util.Scanner;
6.public class FreeFall {
7.    public static void main(String[] args) {
8.// 此语句意义何在?(  创建接收控制台输入的类Scanner   )
9.        Scanner scanner = new Scanner(System.in);
10.        double g = 9.80;
11.        System.out.println("请输入自由下落的时间(秒):");
12.     // 此语句意义何在?(  使用double类型接收控制台输入的时间数据t   )
13.        double t = scanner.nextDouble();
14.     // 此语句意义何在?(  根据自由落体的位移公式计算出位移值s   )
15.        double s = 0.5 * g * t * t;
16.     // 此语句意义何在?(  取保保留一位小数   )
17.        s = Math.round(10 * s) / 10.0;
18.        System.out.println(t + "秒后,物体自由下落了" + s + "米");
19.    }
20.}

八种基本数据类型的大小,以及他们的封装类

1.int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值是
null,所以Integer能区分出0和null的情况。一旦java看到null,就知道这个引用还没有指向某个对象,
再任何引用使用前,必须为其指定一个对象,否则会报错。
2.基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,必须
通过实例化开辟数据空间之后才可以赋值。数组对象也是一个引用对象,将一个数组赋值给另一个数组
时只是复制了一个引用,所以通过某一个数组所做的修改在另一个数组中也看的见。

虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何
供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机
中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素
占8位。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。使用int的原
因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而
是指CPU硬件层面),具有高效存取的特点。

Java自动装箱与拆箱

装箱就是自动将基本数据类型转换为包装器类型(int–>Integer);调用方法:Integer的
valueOf(int) 方法
拆箱就是自动将包装器类型转换为基本数据类型(Integer–>int)。调用方法:Integer的intValue方 法

在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i = new Integer(10);
而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这
样就可以了:
Integer i = 10;

public class Demo {
	public static void main(String[] args) {
		Integer i1=100;
		Integer i2=100;
		Integer i3=200;
		Integer i4=200;
		System.out.println(i1 == i2);  //true
		System.out.println(i3 == i4);  //false
	}
}

在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返
回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一
个对象,而i3和i4则是分别指向不同的对象。

public class Main {
 public static void main(String[] args) {
 Double i1 = 100.0;
  Double i2 = 100.0;
   Double i3 = 200.0; 
   Double i4 = 200.0; 
   System.out.println(i1==i2);  //false
  System.out.println(i3==i4);   //false
  } }

原因: 在某个范围内的整型数值的个数是有限的,而浮点数却不是。

包装类

Integer

new Integer(5);新建对象
Integer.valueOf(5);
parseInt();字符串转换成int

toBinaryString();把整数转换成2进制数据

toOctalString();把整数转换成8进制数据

toHexString();把整数转换成16进制数据

Double
new Double(3.14)

Double.valueOf(3.14)//和 new 没有区别

Double.parseDouble();

Integer a = new Integer(5);//创建对象

Integer b = Integer.valueOf(5);//读取缓存

Integer c = Integer.valueOf(5);//读取缓存

System.out.println(b==c);//true

System.out.println(a==b);//false

System.out.println(a.equals(b));//true

自动装箱:把基本类型包装成一包装类的对象

Integer a = 5;//a是引用类型,引用了包装对象的地址。

编译器会完成对象的自动装箱:Integer a = Integer.valueOf(5);

自动拆箱:从包装对象中,自动取出基本类型值

int i = a;//a现在是包装类型,没法给变量赋值,需要把5取出来。

编译器会完成自动拆箱:int i = a.intValue();

基本类型(八种)

byte 1字节 -2幂7 ^2幂7-1 或者 -128到127
short 2字节 -2幂15 ^2幂15 -1 Short.MIN_VALUE; Short.MAX_VALUE;
int 4字节 -2幂31 ^2幂31 -1
long 8字节 -2幂63 ^2幂63 -1

float 4字节 单精度,对小数部分的精度要求不高
double 8字节 双精度,精确的小数部分并操作值很大时

char 2字节 0到65535
boolean 1字节 真true 假false

变量

变量名必须是一个有效的标识符。
变量名不可以使用java关键字
变量名不能重复

标识符

A 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。
B. 不能以数字开头。
D. 标识符的命名最好能反映出其作用,做到见名知意。
C. 标识符是严格区分大小写的。

关键字

一共有53个关键字。其中有两个保留字:const和goto。关键字不能被用作标识符!!

引用类型

引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。如:类,接口,数组

进制前缀

0x - 16进制

0 -8进制

\u -char类型,16进制

浮点数运算不精确

用BigDecimal类
add()

public static double add(double d1, double d2) {
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.add(b2).doubleValue();
}

subtract()

BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.subtract(b2).doubleValue();

方法的重载

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(也就是说参数的个数和类型不同)。

创建数组

动态初始化:int[] a = new int[5];
静态初始化1:int[] a ={1,2,3,4,5,6,7,8};
静态初始化2:int[] a =new int[]{1,2,3,4,5};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值