JAVA笔记03 变量和运算符 面试题以及笔记
标识符的命名规则需要注意哪几点?
定义
就是给类,接口,方法,变量等起名字的字符序列
组成规则
- 英文大小写字母
- 数字
- $和_
注意事项
- 不能以数字开头
- 不能是java中的关键字
- 区分大小写
常见的命名规则(见名知意)
A:包全部小写
单级包:小写
- 举例:liuyi,com
多级包:小写,并用.隔开
- 举例:cn.itcast,com.baidu
B:类或者接口
一个单词:首字母大写
- 举例:Student,Demo
多个单词:每个单词首字母大写
- 举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写
- 举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写
- 举例:studentAge,showAllNames()
D:常量
全部大写
一个单词:大写
- 举例:PI
多个单词:大写,并用_隔开
- 举例:STUDENT_MAX_AGE
基本数据类型有哪几类?包含String吗?
Java的数据类型分两种:
1.基本类型:int,byte,float,double,char
2. 对象类型(类): Integer,Byte,Float,Double,Char,String,其它一切java提供的,或者你自己创建的类。
其中Integer又叫 int的包装类。而Byte和Float也类似,一般包装类的名字首写是数值名的大写开头。
String类你可以理解成 char[]数组去想就明白了。因为数组是一个类,所以String也就是一个类了。它不是基本数据类型。
或者你还可以这样想, java分为
1。数据;
2。类对象
两种类型,数据是运算的基本单元,这些运算一般类似+ - * % 等数学运算,而类对象的运算是必须你定义的。或者系统有帮你定义的。这些运算一般都是一些函数如set和get方法。
什么叫包装类?
在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。
比如我们也可以定义一个类:
class Integer{
int i=0;
public Integer(int i){
this.i=i;
}
}
这样这个Integer就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
Integer it=new Integer(10);
现在变量it就是一个对象,不是一个数字。
每种基本数据类型都定义一个变量。
//这里偷懒了,变量名尽量不要这么定义,值得注意的就是float类型后要加后缀
private
byte
bb =
1
;
private
short
s =
2
;
private
int
i =
1
;
private
long
l =
2
;
private
float
f =
0
.5f;
private
double
d =
0.05
;
private
char
c =
'a'
;
private
boolean
b =
false
;
写出基本数据类型自动转化的流程图。
整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
在基本JAVA类型中,如果不明确指定,整数型的默认是int类型,带小数的默认是double类型
对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如: net.frontfree.javagroup
类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。
例如: Circle
interface RasterDelegate;
interface Storing;
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
例如: sendMessge
变量(Variables) 除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。
变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。 char c;
int i;
float myWidth;
实例变量(Instance Variables) 大小写规则和变量名相似,除了前面需要一个下划线 int _employeeId;
String _name;
Customer _customer;
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
例如: MAX_VALUE
定义一个变量需要注意什么?
/*
* 定义变量的注意事项:
* 1)定义一个变量,变量不能重复定义,否则报错
* 2)定义变量,变量的作用域的范围,在当前的这个方法中有效的
* 3)在同一行上是可以定义多个变量,但是不建议
* 4)定义变量,不能以数字开头
* */
public class DataTypeDemo2 {
public static void main(String[] args) {
//定义变量
int a = 10 ;
//重复定义
// int a = 20 ;//错误
// int m = 10,n = 20 ,z = 30 ;//在同一行上可以定义多个变量
int m = 10 ;
int n = 20 ;
int z = 30 ;
//不能以数字开头
// int 1y = 20 ;//错误
}
/*public static void add(){
//类的成员方法
}*/
}
强制类型转化可能出现的问题
让我意识到这个问题是做了一道求标准差的题目,本来题目要求精度不高,答案却总是相差一些。和室友进行比较,发现大致思路一样,并不是很麻烦要用高精度算法求解的。
先上代码:
#include <stdio.h>
#include <math.h>
int main (void)
{
int num,sum,i;
int a[100];
double pro,sum1;
sum = sum1 = 0; //定义并初始化变量
scanf ("%d",&num);
for (i=0; i<num; i++)
{
scanf ("%d",&a[i]);
sum = (double)sum + a[i]; //求和 14行
}
ave = (double)sum / num; //求平均数 16行
for (i=0; i<num; i++)
{
sum1 = sum1 + pow (pro - a[i],2); //求方差
}
printf ("%f\n",sqrt (sum1 / num)); //求标准差并输出
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
上面的代码是可以输出正确答案的,一开始我不是用double来把sum给强制类型转换的,我是用1.0*sum来转换的。其实这两种方法的结果是一样。
现在有个问题:
因为第14行已经对sum进行强制类型转换,那么是不是第16行的类型转换可以省略了,反正ave已经定义为double型了
答案是:错误!
第14行对sum进行的强制类型转换只对右边的sum生效,后边得出的值为浮点型,但是把这个浮点型数值赋值给左边的整型sum,则后面的小数部分会丢失。所以第16行的double不能省!
但是这也是有巧合存在,因为第14行运算的输入的数都为整型,所以小数部分丢不丢失无所谓,更严谨一些应该把sum定义为浮点型。
(同样把整型数赋值给浮点型数,也只是在整型数后面补0而已)
为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
今天是周二,100天以后是周几?
考查运算符的优先级
写出输出的结果.
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);
}
}
插入代码,实现n和m值的交换
//方式一:
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);
如何手动实现整型数值60的二进制到十六进制的转换
//方式一:自动实现
String str1 = Integer.toBinaryString(60);
String str2 = Integer.toHexString(60);
//方式二:手动实现
int i1 = 60;
int i2 = i1&15;
String j = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
int temp = i1 >>> 4;
i2 = temp & 15;
String k = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
System.out.println(k+""+j);
根据运算符的功能,我们把运算符分成哪几类?
运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
算术
单目:+(取正)-(取负) ++(自增1) - -(自减1)
双目:+ - * / %(取余)
三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
关系
都是双目运算符
等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。
位与逻辑
位运算符 与(&)、非(~)、或(|)、异或(^)
&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:10001001101&1111110010比较结果为:1000000转为十进制: 64所以1010&1101=64;
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
逻辑运算符
与(&&)、非(!)、或(||)
赋值
= += -= *= /= %= &= ^= |= <<= >>=
instanceof
该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
提示:摄氏度与芈氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32)
练习前++,后++,三元运算符
写出输出结果:
class Demo{
public static void main(String[] args){
int a=3,b=8;
int c=(a>b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\tc="+c); //
int d=(a>b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\td="+d); //
int e=(a<b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\te="+e); //
int f=(a<b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\tf="+f); //
}
}
----------------------------------------------------
比较 + 与 +=
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 f=3.4;是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4
String是最基本的数据类型吗
答:基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,
我们应该用StringBuffer类
JAVA笔记03 变量和运算符 面试题以及笔记的更多相关文章
- java第二章 变量和运算符
Java 基础应用编程—— 变量和运算符 1.Java程序结构 数据类型:确定要存储在内存中的数据的类型. 变量:是存储数据的基本单元 2.变量的概念 变 ...
- Java基础以及变量和运算符、包机制、javadoc生成
目录 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive type) 数值类型 boolean类型 什么是字节 ...
- javaSE练习1——变量和运算符
一.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用): package com.test; public class t01 { public stati ...
- Java2变量和运算符
课后作业:[必做题] 1√AB互换 已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用) [必做题] package com.two; public clas ...
- Java入门(三):变量和运算符
上次谈到了Java的基本数据类型,今天接着聊Java的变量.运算符. 一.变量 1.变量的分类 变量分为成员变量.局部变量和常量,其中成员变量又分为实例变量.类变量. 2.变量的定义 语法:变量类型( ...
- 一:1.2【print&input与变量和运算符】
[路径] 绝对路径:从根目录开始链接的路径 --->cd C:\Windows\Boot\DVD\EFI\en-US 相对路径:不从根目录开始链接的路径 ----> cd Boot\DV ...
- PostgreSQL自学笔记:5 数据类型和运算符
5 数据类型和运算符 5.1 PostgreSQL 数据类型介绍 5.1.1 整数类型 整型类型 字节 取值范围 smallint 2字节 -2^15 ~ 2^15 int integer 4字节 - ...
- Java 基础 变量和运算符
Java基础语法 第1章 变量 1.1 变量概述 1.2 计算机存储单元 1.3 基本类型之4类8种 1.4 常量与类型 1.5 定义变量(创建变量) 1.6 变量使用的注意事项 1.7 数据类型 ...
- Java变量和运算符
1.变量 变量概述 什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载衣裤:饭盒是容器,用来装载饭菜.那么变量是 ...
随机推荐
- 吴裕雄--天生自然PythonDjangoWeb企业开发:解决使用相对路径名导入包中子模块问题
问题 将代码组织成包,想用import语句从另一个包名没有硬编码过的包中导入子模块. 解决方案
- 什么是Nib文件
Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...
- get方法和load方法的区别
get方法的特点 get方法采用的是立即检索策略(查询):执行到这行的时候,马上发送SQL查询 get方法查询后返回的是真实对象的本身 load方法的特点 load方法采用的是延 ...
- 在Centos 7.7下用minikube部署单节点kubernetes.
centos8 下用yum安装docker-ce会报错,说明docker-ce对centos8支持还不太好.所以在centos7.7下安装 先更新一下系统 yum update 安装 yum工具, ...
- springboot 时间戳和 数据库时间相差14个小时
在 springboot 开发过程中遇到一个奇怪的问题,就是已经设置系统时间GMT+8, 但是时间到数据库后会减少14个小时.后来发现是 jvm 时区和数据库时区设置不一致的问题. jvm 设置的是 ...
- I Hate it-HDU1754 点修改+区间最大值
题意: 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感.不管你喜不喜欢, 现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然, ...
- java并发(一):初探线程的创建
线程的创建两种方式 创建线程有四种方式,今天主要演示的是两种:继承Thread,实现Runable接口 继承Thread创建线程 import lombok.extern.slf4j.Slf4j; @ ...
- day13-Python运维开发基础(递归与尾递归)
递归与尾递归 # ### 递归函数 """ 递归函数: 自己调用自己的函数 递:去 归:回 有去有回是递归 """ # 简单递归 def d ...
- 中国6G为什么要从现在上路?
现在,通信5G的概念早已深入人心,正在从蓝图上的规划走向现实,平心而论,中国在2G/3G/4G时代都没有太突出的表现,或受制于人.或沦为跟随者,如今中国想翻身,于是从一开始就卯足了劲儿抢跑5G,不仅把 ...
- computed、methods、watch
computed:计算属性将被混入到 Vue 实例中.所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例. methods:methods 将被混入到 Vue 实例中 ...