后端-JavaEE,简单的数据类型和方法的使用,常见误区

拿出来大家共勉,不足之处请指正。
很久之前的学习笔记了,一直存放在本地中


使用编译器javac.exe编译源文件*.java

使用解释器java.exe来执行字节码文件*.class

使用反编译器javap.exe来使字节码.class转为源码.java

Java的数据类型:

基本数据类型、引用数据类型

import 语句

引入整个包中的类,只影响编译速度,不影响运行速度。

eg:

import java.*;

import java.lang.String; 速度的问题,电脑上差别不大,在手持设备上会有区别

main方法

1、不一定要有main是对的,但一个项目中只有一个main是错的,一个项目可以有好好多个类,每个类里面都可以有1个main方法

2、web应用中可以不要main是对的,因为IE默认有main方法是错的,不是ie,应该说web 容器已经自带了入口.

3、控制台应用中,必须要有main方法,该方法将作为程序运行的入口.

异或 相同=0 不同=1

或 一个为1 就是1(真)

基本数据类型

1Byte=8bit (1B=8bit)

1KB=1024Byte(字节)=8*1024bit

1MB=1024KB

1GB=1024MB

1TB=1024GB

类代码块执行顺序

被JVM装载->执行父类的相关代码->如果有静态初始化,先执行静态初始化,且只执行一次,以后即使有该类实例化,也不会再执行->如果有静态代码块,以与静态初始化一样的方式执行->如果有new语句带来的实例化,先为成员变量分配空间,并绑定参数列表,隐式或显式执行super(),即父类的构造方法,->执行非静态代码块(main也在)-〉执行本类的构造函数-〉执行其他代码

逻辑运算符

&(按位与)

1&1=1 , 1&0=0 , 0&1=0 , 0&0=0

&&(逻辑与)

先运算&&左边的表达式,一旦为假,后续不管多少表达式,均不再计算,一个为真,再计算右边的表达式,两个为真才为真。

|(按位或)

1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

||(逻辑或)

规则是一个为真即为真,后续不再计算,一个为假再计算右边的表达式。

^(异或运算符)

1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

(异就是不同的意思,两个位置上内容不同就是真“1”,内容相同就是假为“0”)

<<(左移运算符)

5<<2的意思为5的二进制位往左挪两位,右边补0,5的二进制位是0000 0101 , 就是把有效值101往左挪两位就是0001 0100 ,正数左边第一位补0,负数补1,等于乘于2的n次方,十进制位是20

>>(右移运算符)

凡位运算符都是把值先转换成二进制再进行后续的处理,5的二进制位是0000 0101,右移两位就是把101左移后为0000 0001,正数左边第一位补0,负数补1,等于除于2的n次方,结果为1

~(取反运算符)

取反就是1为0,0为1,5的二进制位是0000 0101,取反后为1111 1010,值为-6

>>>(无符号右移运算符)

无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移多少位补多少个0。15的二进制位是0000 1111 , 右移2位0000 0011,结果为3

负数无符号右移

Java StringBuffer 和 StringBuilder

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

字节码

jvm不仅仅可以运行java语言,只要满足java虚拟机规范,任何可以编译成class文件的语言都可以在jvm上运行,例如scala,JRuby等,因此字节码命令所提供的语义描述能力肯定比java语言本身更强大。

每个class文件对应着唯一一个类或者接口的定义信息,但是类和接口不一定都存在于class类文件中,类加载器可以利用反射代理构造一个类或者接口; 类文件中的二进制都是以8个二进制位为一个基本单位进行分割,因此,class文件中8的倍数的字节才是有意义的,超过8个字节的数据项是按高位在前,低位在后的方式存放的; 类中的数据结构主要有两种:无符号数(u1,u2,u4,u8)和表(_info)。

For循环的数据使用顺序

for循环的执行顺序如下:

for(sta1;sta2;sta3)

{ sta4;}

1.进入循环执行sta1;//只是进入的时候执行.

2.执行sta2;//条件为真才执行sta4,不然就跳出for了.

3,执行sta4;

4,执行sta3;

5,再回到第2步开始执行

静态方法调用的三种方式:

1、new xx().静态(); //使用对象调用,不推荐
2、xx.静态(); //类名调用,正规调用方法,推荐
3、静态(); //本类的静态方法在本类调用,直接调用

注意事项:
在同包不同类调用的时候,可以直接 类名.方法() 调用,无需创建对象。

在不同包调用的时候,需要引包再调用。

Arrays

Arrays…sort()用法

Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。

1、Arrays.sort(int[] a)

这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。

1 import java.util.Arrays;
2
3 public class Main {
4 public static void main(String[] args) {
5
6 int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
7 Arrays.sort(a);
8 for(int i = 0; i < a.length; i ++) {
9 System.out.print(a[i] + " ");
10 }
11 }
12
13 }

Arrays.binarySearch用法

一种查找元素的方法。它使用的前提是数组是有序的(即要先用sort来进行排序)。

路径地址问题

已 知 JDK 的 安 装 目 录 为 D:\jdk1.8 ,

则 环 境 变 量 中 classpath 的 值 是 .;D:\jdk1.8\lib path的值是2. .;D:\jdk1.8\bin

this.getClass().getName()

this.getClass().getName()//返回的当前运行的类名

this.getClass().getSuperClass().getName() //返回的是父类名

this.getClass().newInstance(); //用缺省构造函数创建一个该类的对象this.getClass().getInterfaces(); //获得此类实现的接口信息

this.getClass().getMethods();//获得此类实现的所有公有方法

Class.forName(" … JDBC driver class name…"); // Class类的静态方法forName, 向DiverManager注册这个JDBC driver类

unicode大小比较

a——97 A——65 1——49

汉字是比字母大的 汉字排到几千

空语句

一个分号也是一条语句,称做空语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值