A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2018-10-16 09:09  /  415 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关键字:被 java 语言赋予了特殊的含义,用做专门用途的字符串 。关键字中所有的字母都是小写

保留字:现有的 java 版本尚未使用,但以后的版本可能会作为关键字使用 。所以自己命名标识符的时候要尽量避免使用这些保留字 。

标识符:java 对各种变量,方法,类等要素命明时使用的字符序列称为标识符 。
合法标识符:
由英文和数字, _ 或 $ 组成
数字不可以开头
不可以使用关键字和保留字,但可以包含
java 中严格区分大小写,长度无限制
标识符不能包含空格
尽量“见名知意”

变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
java 中的每个变量必须先声明,后使用
该区域的数据可以再同一类型内不断变化

变量的作用域:一对{ } 之间,要有初始化值 。

变量是通过使用变量名来访问这块区域的。

内存分配:
栈 stack : 局部变量,对象声明的引用
堆 heap new : 出来的类或数组的实例(含成员变量)
静态域 : 静态变量
常量池(方法区) : 字符串常量

每一种数据都定义了明确而具体的数据类型,在内存中分配了不同大小的内存空间

数据类型

基本数据类型 byte short int long float double char (2个字节 16 bit) boolean

引用数据类型

接口
数组

变量根据声明的位置不同,可以分为成员变量和局部变量。

ASCLL 码的介绍
背景:一个 byte 有8(bit)位 ,可以表示出 256 个不同的状态,就是 256 个符号,ASCLL 就是英语字符和二进制位之间的关系,一共规定了128 个字符的编码。这 128 个符号只占用了一个字节的后面7位,最前面的 1 位统一规定为 0 。
缺点:不能表示所有的字符 (除英文之外的字符)。
相同的编码表示的字符不一样:比如 120 在法语中的代表了什么, 在汉语中代表了什么 。反正不一样

Unicode 编码:
为什么会出现乱码?世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号,因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式来解读,就会出现乱码 。
Unicode :一种编码,将世界上所有的符号都纳入其中,每一个符号都赋予了独一无二的编码,使用 Unicode 没有乱码的问题 。(1-3 个字节)
缺点:他只是规定了符号的二进制代码,却没有规定这个二进制码应该如何存储,无法区别 Unicode 和 ASCll 。计算机无法区分三个字节表示一个符号还是分别表示三个符号。

UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
是一种变长的编码方式,它可以使用 1-6 个字节表示一个符号,很据不同的符号而变化字节长度。
TUF-8 的编码规则:
单字节和 ASCLL 编码一样 。
多字节:
对于多字节的 UTF-8 编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为 1,第一个字节的第 n+1 位为 0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为“10”,其余 6 位用来对字符进行编码 。

boolean 类型数据只允许取值 true 和 false,无 null

基本数据类型之间的转换:
容量小的类型自动转换为容量大的数据类型
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
byte , short , char 之间不会相互转换,他们三者在计算时首先转换为 int 类型 。
当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型 。

原码,反码,和补码:
对于正数:三码合一
对于负数:符号位为1;

二进制在计算机中是以补码的方式来存储 。
例如: -13 的表示
原码: 1 0 0 0 1 1 0 1
反码: 1 1 1 1 0 0 1 0 (原码除了符号位取反)
补码: 1 1 1 1 0 0 1 1 (反码 + 1)

所以一个字节(1 byte = 8 bit)的范围是 -128—127
127补码 :0 1 1 1 1 1 1 1
-128补码:1 0 0 0 0 0 0 0

十进制 -> 二进制:除 2 取余数的逆 。

逻辑运算符:
逻辑 &(与) |(或) !(非) ^(异或)
短路 && (短路与) || (短路或)

区别:& : 不论左边真假,右边都要进行运算
&& :如果左边为真,右边参与运算,如果左边为假,那么不参与运算 。
| 和 || 区别同理 。

位运算符:位运算是直接对二进制进行运算
注意(无<<<)
<< 左移 3<<2 = 12
>> 右移 3>>1 = 1
>>> 无符号右移 3>>>1 = 1
无符号右移:被移位二进制最高位无论是 0 或者是1,空缺位都用 0 补

异或运算:相同为 false 不同为 true 。(异或追求的是异!)
公式(n^m)^m = n 可用于变量替换 。

~ 取反的符号:不论是正数还是负数取反,都是补码取反 。

最简单的无限循环控制语句: while ( true ){ } 、 for ( ; ; ){ }

写出输出的结果.

//考查运算符的优先级
class Demo{
    public static void main(String[] args){
        int x=0,y=1;
        if(++x==y-- & x++==1||--y==0)
            System.out.println("x="+x+",y="+y);//x = 2,y = 0;
        else
            System.out.println("y="+y+",x="+x);
    }
}
1
2
3
4
5
6
7
8
9
10
int n = 5,m = 13;
//插入代码,实现n和m值的交换
System.out.println(“n=”+n+”,m=”+m);

[answer]

int n = 5,m = 13;
//int temp = n;
//n = m;
//m = temp;
System.out.println("n="+n+",m="+m);

//n = n + m;
//m = n - m;
//n = n - m;
System.out.println("n="+n+",m="+m);

n = n ^ m;
m = n ^ m ;
n = n ^ m;
System.out.println("n="+n+",m="+m);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错

答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)

Java 有没有 goto
答:java 中的保留字,现在没有在 java 中使用

用最有效率的方法算出 2 乘以 8 等于几
答:2 << 3

char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,
所以放一个中文是没问题的

float 型 float f=3.4 是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

String是最基本的数据类型吗
答:基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。
java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer 类

switch是否能作用在 byte 上,是否能作用在 long 上,是否能作用在String上
答:switch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte 。long 不能作用于 swtich 。 JDK1.7 新加入了 String 类型 。

判断是否为闰年的条件:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
//是闰年
}

输入两个正整数m和n,求其最大公约数和最小公倍数
int m = 12, n = 28;
//获取m和n的较大值
int max = (m > n)? m : n;
//获取m和n的较小值
int min = (m < n)? m : n;

//求m和n的最大公约数

for(int i = min;i >= 1;i--){
    if( m % i == 0 && n % i == 0){
        System.out.println("m和n的最大公约数是:" + i);
        break;
    }
}
1
2
3
4
5
6
//求m和n的最小公倍数

for(int i = max;i <= m * n;i++){
    if( i % m == 0 && i % n == 0){
        System.out.println("m和n的最小公倍数是:" + i);
        break;
    }
}
1
2
3
4
5
6
/*
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
*/

class ShuiXianHua{
    public static void main(String[] args){
        for(int i = 100;i < 1000;i++){//实现所有的三位数的一个遍历
            int j1 = 0;
            int j2 = 0;
            int j3 = 0;
            j1 = i / 100;//百位
            j2 = (i - 100*j1) / 10;//十位
            j3 = i - 100*j1 - 10*j2;//个位

            if( i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){
                System.out.println("此数值为满足条件的水仙花数:" + i);
            }
        }
    }
}
---------------------
【转载】
作者:YJK923
原文:https://blog.csdn.net/yujikui1/a ... 666?utm_source=copy


3 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马