java data type

前言

java新手上路,在参考工程中, 看见char的赋值很怪,记录一下。

实验

动态调试, 才知道char类型是双字节的.
在java中可以使用8进制,10进制,16进制.
工程中出现8进制,也许是反编译软件风格的问题。真正工程中,没人用8进制来赋值吧?
16进制的写法也有2种, 可以使用C风格的16进制赋值.

    private static int stringUTF8Length(char ary_char[])
    {
        // eclipse的重构功能真好用, 重构完, 可以继续调试
        int i_length = 0;

        int i = 0;
        int j = ary_char.length;
        char c_tmp = 0;

        // https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
        // 
        // char: The char data type is a single 16-bit Unicode character. 
        // It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).
        // 
        // '\177' 是8进制 = 0x7f
        // '\u07FF' 是16进制 0x7ff, 用C风格的0x7ff赋值, 看的更习惯
        // 不喜欢8进制的赋值, 看不懂(必须用计算器了)
        for (i = 0; i < j; i++) {
            c_tmp = ary_char[i];
            if ((c_tmp >= 0) && (c_tmp <= 0x7f)) {
                i_length++;
            } else if ((c_tmp >= 0x80) && (c_tmp <= 0x7ff)) {
                i_length += 2;
            } else {
                i_length += 3;
            }
        }

        return i_length;
    }

类的域作用符

c++里面是::
java里面是.

public class OracleStatement
    implements oracle.jdbc.internal.OracleStatement, ScrollRsetStatement
{
// ...
    public static final int SQL_KIND_SELECT_OR_WITH = 0;
    public static final int SQL_KIND_BEGIN_OR_CALL_OR_DECLARE = 1;
    public static final int SQL_KIND_INSERT_OR_DELETE_OR_UPDATE = 2;
    public static final int SQL_KIND_CONTROL = 3; // e.g. alter
// ...
}

    // 引入常量所在类的头文件
    import oracle.jdbc.driver.OracleStatement;

// 使用另外一个类中定义的常量
    public synchronized int parseExecuteFetch(DBStatement dbstatement, byte sql_kind, byte array_sql[], DBDataSet binds_in, int i, DBDataSet binds_out, int j)
        throws SQLException, IOException
    {
        DBType adbtype[] = null;
        DBData adbdata[] = null;
        DBType adbtype1[] = null;
        DBData adbdata1[] = null;
        if(binds_in != null)
        {
            adbtype = ((DBDataSetImpl)binds_in).getDBTypes();
            adbdata = ((DBDataSetImpl)binds_in).getDBData();
        }
        if(binds_out != null)
        {
            adbtype1 = ((DBDataSetImpl)binds_out).getDBTypes();
            adbdata1 = ((DBDataSetImpl)binds_out).getDBData();
        }

        if (dbstatement == null 
                || array_sql == null 
                || sql_kind < OracleStatement.SQL_KIND_SELECT_OR_WITH 
                || sql_kind > OracleStatement.SQL_KIND_CONTROL)
        {
            DBError.check_error(433);
        }
        // ...

猜你喜欢

转载自blog.csdn.net/LostSpeed/article/details/82701644