1、包装类

Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢?

Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,
即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

Integer类型的值会在堆空间开辟存储区域,
int 类型的值会存放于栈空间,存储和读取速度快于Integer值;
但是Integer类提供了多个和整数操作相关的方法,
如进制转换,大小比较,类型转换等,这是int 无法比拟的;

(1)除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了。
(2)Integer,Byte,Float,Double,Short,Long都是Number类的子类。(Number类后面讲);
(3)Character和Boolean都是Object直接子类;
(4)8个类都是final修饰的(不可被继承)。
把基本数据类型 → 包装类:
     •通过对应包装类的构造方法实现
     •除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象。
包装类 → 基本数据类型
     •包装类的实例方法xxxValue();    // xxx表示包装类对应的基本数据类型
boolean bool = false;
Boolean b2 = new Boolean(bool);
Integer i = new Integer(3);
int i2 = i.intValue();
Boolean b1 = new Boolean("TRue");//true
boolean b2 = b1.booleanValue();
Float f = new Float("3.14");//3.14
Integer i2 = new Integer("123s");//NumberFormatException

2、自动装箱&自动拆箱

jdk1.5开始出现的特性:
    •自动装箱:可把一个基本类型变量直接赋给对应的包装类对象或则Object对象
    •自动拆箱:允许把 包装类对象直接赋给对应的基本数据类型 
int i1 = 12;
int i2 = 12;
System.out.println(i1 == i2)//true Integer in1 = new Integer(12);
Integer in2 = new Integer(12);
System.out.println(in1 == in2)//false in1 = 12;
in2 = 12;
System.out.println(in1 == in2)//true in1 = -250;
in2 = -250;
System.out.println(in1 == in2)//false //这里涉及到了一个享元模式
//就是说在你操作整数的时候,有一个区间的数【-128~127】,你会经常使//用,它会缓存起来,所以-250为false,12为true
//byte,short,integer,long都是一样的
Integer i = 3;//装箱
int i2 = i;//拆箱
Object flag = new Boolean(false);
if(flag instanceof Boolean){
Boolean b = (Boolean)flag;
boolean b2 = b;
}

3、基本类型和String之间的转换

ØString → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量;
Ø基本类型 → String,String 类有静态方法valueOf(),用于将基本类型的变量转换成String类型。
String str = "17";
int i = Integer.parseInt(str);//String  --> 基本类型
String s1 = String.valueOf(i);//基本类型 --> String
 
 
4、代码块
(1)代码块指的是使用"{}"括起来的一段代码,根据代码块存在的位置可以分为4种: 
       •普通代码块;
       •构造代码块;
       •静态代码块;
       •同步代码块(线程同步的时候讲解)。
(2)代码块里变量的作用域:
       •只在自己所在区域(前后的{})内有效;
A、普通代码块
     普通代码块就是直接定义在方法或语句中定义的代码块:
.....main.....{
{
int x = 1;
System.out.println("普通代码块" + x);
}
int x = 99;
System.out.println("代码块之外" + x);
}
//普通代码块1
//代码块之外99

B、构造代码块

     直接写在类中的代码块(优先于构造方法执行,每次实例化对象之前都会执行构造代码块)
public class Demo {
{
System.out.println("我是构造代码块");
}
public Demo(){
System.out.println("我是构造方法");
}
public static void main(String[] args) {
System.out.println("main");
Demo d1 = new Demo();
Demo d2 = new Demo();
}
}
//main
//我是构造代码块
//我是构造方法
//我是构造代码块
//我是构造方法

C、静态代码块

     使用static 修饰的构造代码块(优先于主方法执行,优先于构造代码块执行,不管有创建多少对象,静态代码块只执行一次,可用于给静态变量赋值)
public class Demo {
{
System.out.println("我是构造代码块");
}
public Demo(){
System.out.println("我是构造方法");
}
static {
System.out.println("我是静态代码块");
}
public static void main(String[] args) {
System.out.println("Main");
new Demo();
new Demo();
}
}
//我是静态代码块
//main
//我是构造代码块
//我是构造方法
//我是构造代码块
//我是构造方法

D、同步代码块

5、包装类Integer把十进制转换成二进制、八进制、十六进制
如果用到了对int,bool的相关操作,都可以使用自己的包装类来进行,这也是包装类的好处
但包装类毕竟是对象,所以会被分配到堆上,视情况来使用!
注意点

6、final关键字

①final可以修饰类,方法,变量。
②final修饰类不可以被继承,但是可以继承其他类。 (太监类)
③final修饰的方法不可以被覆盖,但可以覆盖父类方法。(太监方法)
④final修饰的变量称为常量,这些变量只能赋值一次。(太监变量)
⑤内部类在局部时,只可以访问被final修饰的局部变量。
⑥final修饰的引用类型变量,表示该变量的引用不能变,而不是该变量的值不能变;
   通常规范中:常量名称所有字母大写,若有多个单词组成,单词间使用下划线连接。
   public static final修饰的常量称为全局常量;
7、

java初学3的更多相关文章

  1. java初学的分析

    java初学的分析第一阶段:入门阶段学习目标:简单项目开发学习内容:1.Java入门书籍,Java基础知识.关于Java入门级的书,给大家推荐过<Java编程思想>.<Java核心技 ...

  2. 【全网最优方法】JAVA初学:错误: 找不到或无法加载主类HelloWorld

    JAVA初学:错误: 找不到或无法加载主类 HelloWorld 我这是看的黑马2019网课(B站)出现的问题. 放一下别人的图,我也是大概的问题:就是javac没问题,java却无论怎么弄都报错. ...

  3. (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目

    相信很多小伙伴们在初学 Java 时都会出现这样的情况,就是在网上一顿搜索加捣鼓终于把 JDK 和IDEA 这两款软件安装配置好,但是发现面对这个陌生的软件此时却无从下手,那么接下来我就给大家简单地介 ...

  4. sqlite - java 初学

    进来准备使用一种embedded database,即嵌入式数据库,方便随项目本地存储.目前学习打算是sqlite和H2. document:http://www.runoob.com/sqlite/ ...

  5. Java 初学记录之可执行jar包

    环境 jdk7 jre7 当我用jdk7开发的时候,编写完成可执行的jar工具,并且成功使用. 当我在另一台机器安装了jre6,再次运行我的小工具jar 的时候,报错 解决: http://stack ...

  6. JAVA初学(1):值类型和引用类型的区别

    JAVA值类型和引用类型的区别(转)                                                          [定义] 引用类型表示你操作的数据是同一个,也就 ...

  7. Java初学随笔

    背景 狡兔三窟,在使用了近7-8年的C#后,考虑到云化的到来,还是要面向更多的语言与技术,近期决定学习scala,先从Java为跳板,最后达到学会并熟练 使用scala的目的. <核心技术> ...

  8. java初学知识点

    public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARG ...

  9. Java初学(四)

    一.图解二维数组 二.图解动态创建二维数组 三.杨辉三角练习: import java.util.Scanner; class Array2Demo{ //实现杨辉三角 public static v ...

  10. Java初学(三)

    一.使用键盘录入数据 三步:1.导入包:import  java.util.Scanner; 2.创建键盘录入对象:Scanner sc=new  Scanner(System.in);   3.通过 ...

随机推荐

  1. 位图算法-hash算法的后继应用

    判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了.位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的 ...

  2. NYOJ(42)欧拉图

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 我是参考了红黑联盟的结题报告了的.但是有一个位置,应该是红黑联盟写错了吧,就是那个连通 ...

  3. Centos 5.5 编译安装mysql 5.5.9

    下载mysql wget  http://mysql.mirrors.pair.com/Downloads/MySQL-5.5/mysql-5.5.9.tar.gz 创建mysql用户 [root@x ...

  4. Python 数据驱动 unittest + ddt

    一数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产 ...

  5. border-radius给元素加圆角边框

    border-radius给元素加圆角边框 例: border-radius:20px; /*所有角都使用半径为20px的圆角*/ 实心圆: 把宽度(width)与高度(height)值设置为一致(也 ...

  6. 运行时库例程-acc_get_num_devices

    格式C 或 C++: int acc_get_num_devices( acc_device_t ); 描述例程 acc_get_num_devices 返回主机上指定类型的加速器设备数量.输入参数说 ...

  7. 使用Newtonsoft.json 解决 Asp.Net MVC DateTime类型数据Json格式化问题

    解决思路 众所周知,MVC中调用的微软的组件JavaScriptSerialer...,格式DateTime类型数据需要在客户端专门解. 还知道,NewtonSoft.json可以“正确”的格式化Da ...

  8. caffe的输入

    决定将caffe分为几个部分进行总结,首先是第一部分,输入数据以及输入层. 首先从输入数据对BP的影响开始介绍. sgd的随机性 由于是sgd,因此样本一定要shuffle.BP中说到,样本选择遵循俩 ...

  9. Objection, 一个轻量级的Objective-C依赖注入框架

    简介 项目主页:https://github.com/atomicobject/objection 实例下载: https://github.com/ios122/ios122 Objection 是 ...

  10. 【CodeBase】【转】php随机生成汉字

    本方法是通过生成GB2312编码的汉字后,再转码为UTF-8编码.之所以这样做是因为UTF-8的常用汉字太过分散,随机生成会出现大量生僻字,而使用GB2312编码的好处在于其收录的大部分汉字为常用汉字 ...