Java基础

命令行运行java

jar包都放在lib文件夹里

java -Djava.ext.dirs=lib Main

ubuntu 安装jdk

JDK是java的开发环境,它包括了运行环境(jre)和开发中需要的编译、调试、程序诊断。
很多软件已不需要通过环境变量JAVA_HOME来找到java的运行环境。
http://www.cnblogs.com/a2211009/p/4265225.html

jre是提供java运行环境而不是开发环境
OpenJDK 和 Sun JDK 的关系

sudo apt-get install openjdk-8-jdk

Centos安装OpenJDK

#yum搜索OpenJDK8软件包 
yum search java-1.8.0|grep openjdk 
#安装java-1.8.0-openjdk.i686
yum install java-1.8.0-openjdk.x86_64 -y 

Map和List的简单构建方式

new HashMap(){{
            put("saleState",saleState);
            put("serveType",serveType);
        }}

new ArrayList<List>(){{
add(masterSocketDeviceIds);
add(dimmingLightDeviceIds);

Array转List
List list= Arrays.asList(strArr);
}};

Java没有范型数组

枚举

ordinal()返回的值是索引,value()返回的是给枚举变量赋予的值。

public enum EnumDeviceType {
    Unknow(0),
    MasterSocket(1),
    SlaveSocket(2),
    DoorbellController(42),
    PowerControl(43);

    private int value = 0;

    private EnumDeviceType(int value) {
        this.value = value;
    }

    public int value() {
        return value;
    }
}

byte

char与byte:
byte是8位的一个字节,char是UNICOEDE字符,是16位的整数;

java中的byte、int等都是有符号的,取byte的无符号数只要进行&0xff操作即可:

public static int[] toUbytes(byte[] bytes){
        int[] ints=new int[bytes.length];
        for(int i=0;i<bytes.length;i++){
            ints[i] = bytes[i] & 0xff;
        }
        return ints;
    }

public static String bytes2HexString(byte[] bytes) {
        String ret="";
        for (int i = 0; i < bytes.length; i++) {
            String hex = Integer.toHexString(bytes[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            ret+=hex;
        }

        return ret.toUpperCase();
    }

Java字段反射+POI示例:
http://blog.csdn.net/panpan96/article/details/76566475

Base64

BASE64Encoder/BASE64Decoder类在sun.misc包中,是sun公司的内部方法,以后有删除的潜在可能,
Base64类在java.util包中,推荐使用Base64.getEncoder()。

split

String[] subs=str.split(“,”,-1);//limit -1 不忽略两端的分隔符。

java -jar 命令行传参并获取的方法

方式一:
java -jar xxx.jar aaa bbb cccc,传了3个参数,通过main方法的参数获取。
方式二:
java -jar xxx.jar -Da1=aaa -Db1=bbb -Dc1=ccc,通过System.getProperty(“aaa”,”1″); 方式获取。作为环境变量。
方式三:
java -jar xxx.jar –a1=aaa –b1=bbb,springboot的写法,可以通过@Value(“${a1}”)获取。
注意参数的位置以及中划线符号的数目:
jar、Dspring.profiles.active前面是一个中划线,db.url等自定义参数前面是2个中划线。
-Dspring.profiles.active位于-jar之前,–db.url参数位于.jar之后。

java -Dspring.profiles.active=dev -jar yirui_clock_storage-1.0.jar --db.url=localhost --db.port=14000 --db.username=数据库用户名 --db.password=数据库密码

spring.profiles.active运行时指定方式

mvn命令运行:mvn spring-boot:run -Drun.profiles=test
命令行运行jar文件: java -jar -Dspring.profiles.active=test xxx.jar

Java对象的地址

对象的hashcode是否是它的地址,这取决于具体的实现,一般来说,它常常是对象的初始地址的整数表示,但是这种实现技术并不是Java编程语言所规定的。在GC后,对象的地址可能会变动,不同的JVM实现也有差异。

java知识网站

http://www.java1234.com

Java的参数传递都是值传递

传值分为值内容值和地址值,传地址值可以认为是传引用。
值传递:方法调用时,实际参数把它的值的副本传递给对应的形式参数。特点:此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:方法调用时,实际参数的地址的副本被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址。在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到原始对象。但对引用的赋值不会影响原始对象。
基本类型:传递的是值的拷贝,也就是说传递后就互不相关了,也就是说,不过副函数的副本如何变化,主本永远不会被影响。
引用类型:传递的是引用地址值,有可能会被影响。
String:具有不可变。是特殊的引用类型,其作用跟基本类型一样,传递后不相关。

String

andyweike博客之String

发表评论